前提:数组是有序的
#include <stdio.h>
//作用:利用二分查找法查找数据
//返回值:数据在数组中的索引
//找到了:真实索引 没找到:返回-1
int search(int arr[], int num, int len)
{
//查找范围
int min = 0;
int max = len - 1;
//利用循环进行查找
while (min <= max)
{
//确定中间位置
int mid = (min + max) / 2;
//进行比较
if (arr[mid] < num)
{
min = mid + 1;
}
else if (arr[mid] > num)
{
max = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int arr[] = { 7,23,79,81,103,144,147,155 };
int num = 103;
int len = sizeof(arr) / sizeof(int);
int index = search(arr, num, len);
printf("%d\n", index);
return 0;
}