二分法查找(非递归实现)
#include <stdio.h>
int main()
{
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int low, high, mid, n=10, x;
printf("Input a integer:");
scanf("%d",&x); // 要查找的数据
low = 0;
high = n-1;
while(low <= high) //
{
mid = (low+high)/2;
if(x == a[mid])
break; // 找到数据
else if(x < a[mid])
high = mid-1; // 前半段,high前移
else
low = mid+1; // 后半段,low后移
}
if(low <= high)
printf("Index is %d\n", mid);
else
printf("Not found! Nearest index is %d\n", mid);
}