#include<stdio.h>
#include<algorithm>
using namespace std;
int num[100];
// 找到返回坐标,否则返回-1;(不会产生二义性)
int search_elem(int length,int elem)
{
int low = 0;
int high = length-1;
while(low<=high){
int mid = (low+high)/2;
if(elem==num[mid])
return mid;
else if(elem<num[mid])
high = mid-1;
else
low = mid+1;
}
return -1;
}
int main()
{
int cnt = 0;
int cur = 0;
int location =-1;
while(scanf("%d",&cur)!=-1&&cur!=0)
{
num[cnt++] = cur;
}
sort(num,num+cnt);// 从下标0开始排序,升序;注意如果下标从1开始,first值应该相应的更改
printf("please input the num you want to search\n");
scanf("%d",&cur);
location = search_elem(cnt,cur);
if(cur != -1)
printf("yes,%d locates in %d\n",cur,location);
else
printf("no,we didn't find %d\n",cur);
return 0;
}
折半查找
最新推荐文章于 2022-01-21 14:37:05 发布