//用二分法,查找一个数是否在一个有序数组中.
#include <stdio.h>
int binary_search(int arr[], int k, int size)
{
int lift = 0;
int right = size-1;
while (lift<=right)
{
int mid = (lift + right) / 2;
if (arr[mid] < k)
lift = mid+1;
else if (arr[mid] > k)
right = mid-1;
else
return mid;
}
return -1;
}
int main()
{
int arr[] = {10, 20, 30, 40,50, 60,70,80,90,100};
int k =60;
int size = sizeof(arr) / sizeof(arr[0]); //数组的长度放在函数外面获取
int ret = binary_search(arr, k, size); //因为函数传递数组仅仅是传递的数组的首地址
if (ret == -1)
{
printf("没有找到。");
}
else
printf("%d 找到了。", k);
return 0;
}