基本的二分查找
2017-08-09 23:32
169 查看
二分查找有两个库函数
这里我是用从1开始的,从0开始可以类比。
这里我们也可以自己实现二分查找,如下
lower_bound和upper_bound
int a[10] = {0,1,2,2,4,4,4,4,5,6}; int k = (int)(lower_bound(a+1,a+1+9,4) - (a+1)); //返回的是第一次出现4的前一个位置结果是3 int f = (int)(upper_bound(a+1,a+1+9,4) - (a+1)); //返回的是最后一次出现4的位置。
这里我是用从1开始的,从0开始可以类比。
这里我们也可以自己实现二分查找,如下
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> using namespace std; int main(void){ int a[10] = {0,1,2,2,4,4,4,4,5,6}; int l = 1,r = 9; int find = 4; while(r - l > 1){ int mid = (l+r)/2; if(a[mid] >= find)//这里是更新r,然后不断缩短右区间 r = mid; else l = mid; } printf("%d\n",r); //这里是返回这个数的最后一个位置7,如果这个序列没有这个数,得到的是刚好比这个数大的第一个位置。 l = 1,r = 9; while(r - l > 1){ int mid = (l+r)/2; if(a[mid] <= find)//不断缩减左区间 l = mid; else r = mid; } //这里得到的是这个数第一次出现的位置4,如果这个序列没有这个数,得到的是刚好比这个数小的最后一个位置。 printf("%d\n",l); return 0; }
相关文章推荐
- 二分查找,二叉查找树(二叉排序树)的基本思想以及算法实现
- 算法学习---基本数据类型的数组二分查找实现
- 算法学习---基本数据类型的数组二分查找实现
- 二分查找和字符串基本知识总结
- canyon?最基本的二分查找
- js基本语法--查找(二分查找)
- 算法系列(二)查找算法--基本查找和二分查找
- 基本算法-二分查找
- 一些基本算法--归并两个数组,二分查找
- js基本算法:冒泡排序,二分查找的简单实例
- 插值搜索——本质和二分无异,是利用数据分布的规律来定查找点,其基本假设是数据分布均匀
- 基本查找算法 PHP 实现 保存 顺序查找,二分查找 分块查找
- 二分查找的两种基本方式
- 算法系列(二)查找算法--基本查找和二分查找
- 19-JavaScript-基本语法-数组-冒泡-二分查找
- 二分查找和multiset用法
- Day15 递归进阶和二分查找以及冒泡排序
- 二分查找
- leetcode:Search for a Range 二分查找
- 查找:链表顺序查找和有序数组二分查找