来一个C语言二分法查找、找到 输出 找不到 给出提示 10个整数的就行了~

百度复制过来的就不要来了、 请先测试可用再来 谢谢~~
楼主写这个代码时遇到的问题:循环变量不知如何控制、

第1个回答  2012-11-20
#include<stdio.h>
void main()
{
int beg=0,end=0,mid=0;
int num=0;
int a[8]={1,3,5,9,11,24,56,89};
printf("请输入要查找的数!\n");
scanf("%d",&num);
beg=0;
end=7;
while(beg<end)
{
mid=(beg+end)/2;
if(a[mid]==num)
{
printf("第%d个元素是要找的元素\n",mid+1);
break;
}
else if(a[mid]<num)
{
beg=mid+1;
}
else
{
end=mid-1;
}
}
if(beg>=end)
{
printf("查找失败!\n");
}
}追问

哥们 你测试了吗? 果断有问题的代码、

追答

#include
void main()
{
int beg=0,end=0,mid=0;
int num=0;
int a[8]={1,3,5,9,11,24,56,89};
printf("请输入要查找的数!\n");
scanf("%d",&num);
beg=0;
end=7;
while(begend)
{
printf("查找失败!\n");
}
}
这样就行了。

本回答被提问者采纳
第2个回答  2012-11-20
递归版的(数组要有序):

int biSearch(int a[], int left, int right, int key)
{
if(left > right) return -1; //未找到
mid = (left + right)/2;
if(a[mid] == key) return mid; //返回找到的下标
return (a[mid] < key ? biSearch(a, mid+1, right) : biSearch(a, left, mid-1));
}

C语言折半查找法详细代码(假如有10个已排好序的数)
折半查找即二分查找,思想是:在一组有序的数据中查找一个数据,首先将要查找的数据与这组数中间的值比较,如果要查找的数据比它小,则在左半部分中继续查找;若比中间值大,则在右半部分中继续查找,相等的话就表示已找到,直接返回。这样,每次查找都可以将查找范围缩小一半,以此达到O(log N)的...

C语言中二分法的具体程序是什么呢?
if(num>a[mid])\/\/如果要查找的数据比a[mid]大,在前半数组查找\/\/ { top=mid+1;mid=(top+bottom)\/2;} else \/\/如果要查找的数据比a[mid]小,在后半数组查找\/\/ { bottom=mid-1;mid=(top+bottom)\/2;} } if(flag==0)\/\/如果未找到数据,输出找不到的信息\/\/ printf("无法找到你要...

C语言 二分法查找的问题?请大家帮我解惑。
第一,题目不严谨,这个折半查找可以向上或向下取整(大部分参考书上默认用向下取整来讲解),向下取整当然是花4次找到8,而向上取整是3次。第二,最后剩下一个数的时候,那个数还需不需要比较,从代码层面来看,不能简单认为最后剩下的一个数就是所找的数,因为那个数可能并不在序列中,所以最后一次...

C语言中二分法的具体程序是什么呢?
while(flag==0 && (top-bottom)>0)\/\/如果在规定的范围内,开始二分法查找\/\/ { if(num==a[mid])\/\/找到所需数据,退出本层循环\/\/ { printf("你所要查找的数字是第%d个。\\n",mid);flag=1;} else if(num>a[mid])\/\/如果要查找的数据比a[mid]大,在前半数组查找\/\/ { top=mid+1;m...

C语言中,怎样把一个整数按大小顺序插入已经排好序的整形数组中?
int midsearch(int a[],int n,int x);\/\/二分法查找插入位置int main(int argc, char *argv[]){ int *arr=NULL; int n=0;\/\/初始数组大小 int i=0; int x=0;\/\/待插入数据 int pos=0; \/\/待插入数据位置 while(!n) { printf("请输入一个正整数:\\n"); scanf("%d",&n); } arr=...

C语言 二分法查找次数公式怎么推导?
对具有n个元素的有序数组进行二分法查找,要分析的比较次数,可以使用画二叉判定树的方法来分析。该二叉判定树的高度为[log2(n)]+1层,此即为二分查找的最多比较次数,比如:n=1000,则最多比较[log2(1000)]+1=9+1=10次。如果要计算平均的比较次数,则需要对二叉判定树中的每个节点进行分析,...

借同学百度知道问的,求一个C语言课程设计,关于图书馆借阅的程序。
int mid=0;\/\/外部函数mid,用来返回查找到的位置bool BinarySearch(ook boo,char SearchNum[]) \/\/二分法查找比较书号{ \/\/用bool函数,但由于函数不能有两个返回值,所以设置一个外部变量mid,用来返回查找到的位置 int low=0,high=total-1; int found=0; while(low<=high) { mid=(low+high)\/2; \/\/中...

C语言,随机生成20个数从大到小排列,找到大于平均数的值输出。再输入任意...
i<20;a[i++]=rand()%1000); for(i=0;i<20;i++){ for(k=i,j=k+1;j<20;j++) if(a[k]

...如果找到就指出其在n个数中的位置,否则给出无该数据信息
h> int Dichotomy(int a[],int _value,int n){ \/\/ 二分法(也称折半查找法) int index=0; \/\/ 当前数组的首元素下标 int current=n-1; \/\/ 数组当前的大小 int k; \/\/ 当前数组中间的数的下标 while (index<current) { \/\/ 开始二分法查找 k=(index+current)\/2;...

2010年计算机二级c语言考试
(1)顺序表的插入运算:在一般情况下,要在第i(1≤i≤n)个元素之前插入一个新元素时,首先要从最后一个(即第n个)元素开始,直到第i个元素之间共n-i+1个元素依次向后移动一个位置,移动结束后,第i个位置就被空出,然后将新元素插入到第i项。插入结束后,线性表的长度就增加了1。*:顺性表的插入运算时需要移动...

相似回答