#include<iostream>
using namespace std;
//二分查找法,查找一个数组的元素,并返回所在的位置的下标,
//必须要是一个有序的数组,
int select_arr(int arr[], int len, int arr_value)
{
while (1)
{
int left = 0; //数组的左侧下标
int right = len-1; //数组的右侧下标
while (left <= right)
{
int mid = (left + right) / 2; //定义中间位的下标
int mid_value = arr[mid]; //定义中间值的基准值
if (mid_value == arr_value) //如果基准值正好等于要查找的值,则自动返回要找的位置
{
return mid;
}
//如果基准值大于要查找的值,表明值在左半边,新的查找范围为中间值-1位,也就是mid-1
else if (mid_value > arr_value)
{
right = mid - 1;
}
//如果基准值小于要查找的值,表明值在右半边,新的查找范围为中间数+1位,也就是mid+1;
else if (mid_value < arr_value)
{
left = mid + 1;
}
}
return -1;
}
}
int main()
{
//定义一个int数组,并使用二分查找元素
int arr[10] = { 1, 3, 5, 7, 9, 10, 16, 46, 88, 91 };
int weizhi=select_arr(arr, 10, 16);
return 0;
}