C语言二分法查找

JavaScript06

C语言二分法查找,第1张

#include <stdio.h>//不用math头文件

void main()

{int high = 9,low = 0,m,k,a[10]={1,2,3,4,5,6,7,8,9,10}//hing和low赋初值

scanf("%d",&k)

while (high>=low)//>=

{

m=(high+low)/2

if(k<a[m]) high=m-1//比较的是数值而不是下标

else if(k>a[m]) low=m+1

else

{

printf("yes")

return//这两句地方放错了

}

}

printf("no")

return//if语句去掉

}

if(key==a[mid]) return mid这句就是罪魁祸首。呵呵你是想用return来结束while循环吧。用错了。

找到结果后,你应该是把结果输出出来,而不是用return。return语句是返回整个函数的,在你的程序里main函数就结束了,你当然看不到任何结果了。

改为:

if(key==a[mid]) break*这行是结束while循环的。而不是你所用的return*/

}