#include <stdio.h>
/*练习3-1改进折半查找*/
int binsearch(int x, int v[], int n);
int main()
{
int v[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
printf("%d\n", binsearch(9, v, 10));
return 0;
}
/*
binsearch: find x in v[0] <= v[1] <= ... <= v[n1]
*/
int binsearch(int x, int v[], int n)
{
int low, high, mid;
low = 0;
high = n-1;
while (low < high) {
mid = (low+high)/2;
if (x <= v[mid])
high = mid;//上限只能在high之内
else
low = mid + 1;//下限在low之后
}
return (x == v[low])?low:-1;
}
折半查找
最新推荐文章于 2024-11-11 23:49:41 发布