您的位置:首页 > 其它

二分查找(折半查找)

2013-07-03 22:49 253 查看
下面给出自己书写的折半查找代码

#include<cstdio>
using namespace std;

int a[100];
int n,goal;

int binarySearch(int x)
{
    int l=0,r =n-1;
    int mid;
    while(l<=r)
    {
       mid = (l+r)/2;
       if(a[mid] == x) return mid+1;
       else if(a[mid]>x)  r = mid -1;
       else l = mid +1;
    }
    printf("您要查找的数未找到\n");
    return -1;
}
int main()
{

   printf("请输入你要输入的数据个数 n = ");
   scanf("%d",&n);
   printf("\n");

   for(int i=0;i<n;i++)
   scanf("%d",&a[i]);
   printf("\n");

   printf("请输入你要查找的数 x = ");
   scanf("%d",&goal);
   printf("\n");
   printf("您要查找的数位于第%d的位置\n",binarySearch(goal));
}


折半查找的效率达到log2N的复杂度

while循环条件必须是<=
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: