非递归方式代码
区间范围[left,right],左闭右闭
时间复杂度为O(logn)
#include <iostream>
using namespace std;
int search(int* a, int len, int target)
{
int left = 0;
int right = len - 1;
while (left <= right)
{
int mid = left + (right - left) / 2;
if (a[mid] == target)
{
return a[mid];
}
else if (a[mid] > target)
{
//left = mid + 1;
right = mid - 1;
}
else //a[mid] < target
{
//right = mid - 1;
left = mid + 1;
}
}
return -1;
}
int main()
{
int a[] = { 2,5,6,7,8,9,24 };
int len = sizeof(a) / sizeof(int);
int res = search(a, len, 8);
cout << res << endl;
system("pause");
return 0;
}
运行结果: