eg:查找一个数组中的元素k
#include<stdio.h>
int Binary_search(int arr[ ], int k, int sz){
int left = 0;//指向数组头元素的指针
int right = sz - 1;//指向数组最后一个元素的指针
while(left <= right ){
int mid = ( left + right ) / 2;
if(arr[mid] < k){
left = mid + 1;
}
else if(arr[mid] > k){
right = mid - 1;
}
else{
return mid;
}
}
return -1;
}
int main()
{
int arr[ ] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]);//数组元素个数等于数组总大小除以数组每个元素的大小
int ret = Binary_search(arr, k, sz);
if(ret == -1){
printf("找不到指定的数字!\n");
}
else{
printf("找到了!下标是: %d\n", ret);
}
return 0;
}