折半查找法:
对于一个有序的数列,折半查找一个元素的位置;
效率:O(lgn);
代码说明:
①如果未找到元素
a.若比所有元素小, 返回位置0
b.比所有元素大,返回最后一个位置
c.介于所有元素之间,返回比其大的紧邻元素的位置;
#include <iostream>
using namespace std;
int a[8] = {1,2,3,5,6,7,8,9};
int binaryFind(int low, int high, int num)
{
if(low == high) return low;
int mid = (low + high) / 2;
if(a[mid] == num) return mid;
else if(a[mid] > num) return binaryFind(low, mid, num);
else if(a[mid] < num) return binaryFind(mid+1, high, num);
}
int main()
{
cout<<binaryFind(0, 10, 10);
return 0;
}