#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
int binarySearch(int arr[],int len,int data)
{
int left = 0;
int right = len;
int mid = 0;
while (left<=right)
{
//mid = (right + left)/2; 会有bug
//数组过大时 right+left 超出了int的范围 使得结果为负数 超出数组界限
//也可以写成 mid = left + ((right - left)>>>1); >>>:无符号右移
mid = left + (right - left) / 2;
if (data < arr[mid])
{
right = mid - 1;
}
else if (data > arr[mid])
{
left = mid + 1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10};
int len = size(arr);
int index = binarySearch(arr, len-1,20);
if (index>=0)
{
cout << "the data index is:" << index << endl;
}
else
{
cout << "the data is not found!" << endl;
}
system("pause");
return EXIT_SUCCESS;
}