#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;
}