二分法查找其实就是折半查找,一种效率较高的查找方法。针对有需数组来查找的。
主要思想是:(设查找的数组期间为array[low, high])
(1)确定该期间的中间位置K
(2)将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。区域确定如下:
a.array[k]>T 由数组的有序性可知array[k,k+1,……,high]>T;故新的区间为array[low,……,K-1]
b.array[k]
时间复杂度:O(log2n);
#define Type int
// 二分法
const int BinSearch(const Type arr[],const Type findNum,const int Len)
{
int low = 0;
int high = Len;
int mind = (low + high) / 2;
while (low < high)
{
mind = (low + high) / 2;
if (arr[mind] < findNum)
{
low++;
}
else if (arr[mind] > findNum)
{
high--;
}
else
{
return mind;
}
}
return -1;
}