您的位置:首页 > 其它

二分搜索大法

2017-03-14 23:05 190 查看
二分搜索法,很流行 时间复杂度为 T(n)=O(logn),理解就是,一个数组,一头一尾两边往中间夹。看了代码就很好理解

//这个例子是在一个数组内找到相同的数字,返回索引
int binarySearch(int *arr, int length, int key)//参数是 数组,长度,和查找值
{
int low=0;//头部
int high = length - 1;//尾部
int mid;//二分搜索最重要的中间
if (high < low)//尾巴比头还小。扯淡呢
return -1;
while (high >= low)
{
mid = low + ((high - low)>>1);
if (arr[mid] == key)//找到了
{
return mid;
}
else if (arr[mid] > key)
{
high = mid - 1;//说明不在高区,high重定义
}
else
{
low = mid + 1;//说明不再低区,low重定义
}
}
return -1;
}
int main()
{
int arr[5] = { 5,3,1,4,2 };
cout<<binarySearch(arr, 5, 1);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: