#include <stdio.h>
int binsearch(int x, int v[], int n);
int main(void){
int v[8] = {1,3,5,7,9,15,18,23};
printf("%d\n",binsearch(15, v,sizeof(v) / sizeof(v[0])));
return 0;
}
int binsearch(int x, int v[], int n) {
int low,high,mid;
low = 0;
high = n - 1;
while (low <= high) {
mid = (low + high) >> 1;
if(v[mid] < x) {
low = mid + 1;
} else if (v[mid] > x) {
high = mid - 1;
} else {
return mid;
}
}
return -1;
}
int binsearch(int x, int v[], int n) {
int low,high,mid;
low = 0;
high = n - 1;
mid = (low + high) / 2;
while (low <= high && x != v[mid]) {
if (v[mid] > x) {
high = mid - 1;
} else {
low = mid + 1;
}
mid = (low + high) / 2;
}
if (x == v[mid])
return mid;
else
return -1;
}
法1运行结果:
5
--------------------------------
Process exited after 6.076 seconds with return value 0
请按任意键继续. . .
法2运行结果:
5
--------------------------------
Process exited after 7.356 seconds with return value 0
请按任意键继续. . .