在有序数组中通过二分法查找数字
在一个从左到右递增的有序数组中,通过二分法查找数字
#include <iostream>
using namespace std;
int dichotomy(int* pArr, int len, int val)
{
// 左索引
int left = 0;
// 右索引
int right = len-1;
// 中间二分索引
int middle = 0;
while( left <= right )
{
middle = left + (right - left)/2; // 可以写成 (left + right)/2
// 在左边
if( pArr[middle] > val )
{
right = middle - 1;
}
// 在右边
else if( pArr[middle] < val )
{
left = middle + 1;
}
// 找到了
else
{
return middle;
}
}
return -1;
}
int main(void)
{
int arr[] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9}