折半查找,速度很快,但是需要被查找的对象是已经排好序的,
简单的说就是,用被查找的数据和中间值进行比较,例如
start,mid,end
num,
如果num的值比mid大,说明num在mid的右边,那么就把start赋值位mid+1;
如果num的值比mid小,说明num在mid的左边,那么就把end赋值位mid-1;
道理就是这样,下面是代码
#include<stdio.h>
#define LEN 9
int a[LEN] = {1,2,3,3,4,5,6,8,9};
int binarysearch(int number){
int mid,start = 0,end = LEN -1;
while(start <= end){
mid = (start + end)/2;
if(a[mid] < number){
start = mid + 1;
}else if(a[mid] > number){
end = mid - 1;
}else
return mid;
}
return -1;
}
int main(){
printf("----%d---\n",binarysearch(3));
return 0;
}