BinarySearch二分法查找
来源:互联网 发布:word 矩阵 编辑:程序博客网 时间:2024/06/06 03:07
二分法查找思路比较简单,对于一个有序且无重复的序列,使用二分法查找的时间复杂度为O(lgN),效率很高,下面是二分法查找的代码实现,虽然代码很简单,但是一定要注意细节,做到轻松手写二分查找也是不错的嘛。
cpp实现:
#include<iostream>#include<vector>using namespace std;int bs(int n,vector<int> v, int lo, int hi){ int mid; while (lo <= hi){//这里必须是小于等于号,等于号对应的情况是lo = hi,也就是数组长度为1的情况 mid = lo + (hi - lo) / 2; if (v[mid] > n) hi = mid - 1; else if (v[mid] < n) lo = mid + 1; else return mid;//返回对应下标 } return -1;//返回-1表示查无此数。}int main(){ //有序数组 vector<int> v = { 1, 5, 9, 12, 17, 18, 19, 24, 27, 31, 36, 39, 40, 44, 49, 53, 55, 58 }; int n, s = v.size(); cout << "请输入要查找的数:" << endl; cin >> n; int lo = 0, hi = s - 1; int a = bs(n, v, lo, hi); cout << "index is " << a << endl; return 0;}
做完之后我想到一个问题,对于有重复的有序序列应该如何使用二分法来查找呢?应该是不可以使用二分法查找的。设想一个极端的例子,假设一个长度为10的数组,数组的元素全部为1,那么若待查找的元素的也为1,那么在查到相等的时候,lo,hi没法重新赋值了。
0 0
- 二分法查找(BinarySearch)
- 二分法查找. BinarySearch
- BinarySearch二分法查找
- (BubbleSort)冒泡排序与(BinarySearch)二分法查找算法(java)
- BinarySearch 二分法查询
- 定义二分法查找数组中的数,实现arrays.binarySearch()int类型的功能。
- Arrays.binarySearch(二分法检索)
- BinarySearch 二分查找
- 二分查找。BinarySearch
- 二分查找BinarySearch
- BinarySearch二分查找算法
- 二分查找-BinarySearch
- binarySearch二分查找总结
- Binarysearch 二分查找
- 二分查找 - BinarySearch
- BinarySearch(二分查找)
- BinarySearch(二分查找)
- 二分查找(BinarySearch)
- HTTP cookies 详解
- Linux中的Find 指令
- java 基础知识汇总
- 雨滴
- 侠盗猎车手5(GTA5)50辆游戏豪车现实原型
- BinarySearch二分法查找
- 导入WeChatSDK_sample_Android项目报错
- 最最最简单的URL聚类
- java实现清理DNS Cache的方法
- UGUI之坑点小结
- redis学习
- FastJson转为对象
- mysql安装包的下载
- float**类型与float*