C语言

c++中的算法 折半查找法(二分法)

2020-03-21  本文已影响0人  Longjune

折半查找法(二分法)

我大学老师PPT里的示意图
int a[10]={1,2,3,4,5,6,7,8,9,10}; //将a[]改成你想要检索的数组就可以了
int x,left=0,right=9,mid,flag=0; //此处x为要查找的值,right为数组的长度-1,flag为示意找到的变量
 scanf("%d",&x);
 if(x>=a[left]&&x<=a[right])
 while(!flag) // !flag(1)表示没找到,没找到就继续循环直到找到
 { mid=(left+right)/2;
   if(a[mid]==x) flag=1; //找到了就使flag=1,作为循环结束的标志,退出循环
   else if(x>a[mid]) left=mid+1;
        else right=mid-1;
 }
 if(flag==1) printf("a[%d]=%d",mid,x); //找到的时候才可以输出x。这里flag是找到标志,加入判断条件
 else printf("no found!"); //没有需要的可以将它与第一个if语句删除
上一篇下一篇

猜你喜欢

热点阅读