c语言中二分法查找的升级版--折半查找法

最近学到一个比二分法还要精细一些的查找方法:折半查找法

进入正题,1.创建一个数组。2.每次查找前的先明确查找范围也就是下限是low,上限是high(显然low大多数人都是这么理解,反正就是定义两个变量,最好让大家看的明白,见单词知道意思)3.然后让一个变量m去和中间值mid比较大小。4.如果m>mid,下一次查找就从mid之后查找,如果m,下一次就从mid之前查找。

程序实例摆上:

#include

#define N 15

int fun(int a[],int m)

{

int low=0,high=N-1,mid;

while(low<=high){

mid=(low+high)/2;

if(m

high=mid-1;

else if (m>a[mid])

low=mid+1

else return mid;

}

return -1;

}

void main(){

int i,a[N]={-3,2,4,5,7,17,58,89,90,32,56,78,33,31,68},k,m;

printf("a数组的数据:");

for(i=0;i

printf("%d"a[i]);

printf("please input m:");

scanf("%d",&m);

k=fun(a,m);

if(k>=0)

printf("m=%d,index=%d\n",m,k);

else printf("没有查找到")

}



你可能感兴趣的:(c语言)