折半查找,查找算法中的一种,就像猜数字游戏一样,如果猜大了就往小的再猜,反之往大的猜,直到范围越来越小,最差的情况当范围缩到最小才猜到。折半查找的实现就类似这样。
下面先展示折半查找实现的结果:
查找的数据序列为 10,20,30,45,50,60,66,70,78,88 见main.c
//main.c
#include <stdio.h>
int main()
{
int a[10] = {10,20,30,45,50,60,66,70,78,88};
int low,high,mid,len = 10;
low = 0;
high = len-1;
int data;
printf("Search Data: ");
scanf("%d",&data);
while(low <= high){
mid = (low+high)/2;
if(a[mid] == data){
printf("Data Pos is %d\n",mid);
return 0;//找到数据 结束
}
else if(a[mid] < data){
low = mid + 1;
}
else if(a[mid] > data){
high = mid - 1;
}
}
//没找到
printf("Data is not exist!\n");
return 0;
}