查找算法之二分查找
程序员文章站
2022-06-02 11:50:24
...
如果要查找的数据已经事先排序好了,则可以使用二分查找法来进行查找。
1、算法描述
二分查找法是将数据分割成两等份,再比较键值与中间值的大小,如果键值小于中间值,可确定要查找的数据在前半段,如果键值大于中间值,可确定要查找的数据在后半段。
2、算法图解
3、算法demo
#include <bits/stdc++.h>
using namespace std;
bool binarySearch(vector<int> nums, int key)
{
int l = 0;
int h = nums.size() - 1;
while(l <= h)
{
int m = l + (h - l)/2;
if (nums[m] == key)
return true;
else if (nums[m] > key)
h = m - 1;
else
l = m + 1;
}
}
int main(int argc, char const *argv[])
{
vector<int> vec = {1, 3, 4, 6, 7};
cout << binarySearch(vec, 4);
return 0;
}
4、算法总结
在数据已经有序的情况下,二分查找的速度非常快,是O(logn),二分查找的思想在很多地方都有应用。