二分算法是什么
二分搜索是一种时间复杂为 l o g 2 n log_2n log2n的算法,可以用于单调函数求根和单调序列查询的有效算法,即使在数列长度在很大的情况下也能很快对其查询,在此同时二分算法也是一种思维方式,在很多解题过程中可以更好的优化代码等等
二分算法的原理每次拿目标数值(以下用key表示)与数组中间位置的数据(以下用a[mid]表示,mid表示数组中间位置索引值)进行比较,如果key大于a[mid],继续将key与大于a[mid]部分的中间位置的值进行比较;如果key小于a[mid],继续将key与小于a[mid]部分的中间位置值进行比较。
注:对于无序数组,若先进行排序,再使用二分查找,这种方法虽然可以实现查找,但是会改变最原始数组的元素位置,所以针对无序数组,最好用基本的查找算法实现
二分代码实现 一、朴素实现int search(int l,int r,int key) {
int mid = l + r >> 1;
while(a[mid] != key) {
if(a[mid] > key) {
r = mid - 1;
}
else {
l = mid + 1;
}
if(l > r) return -1; //没找到
mid = l + r >> 1;
}
return mid;
}
二、通用实现
int search(int k) {
int l = -1,r = n;//注意的是数组是从0开始的
while(l + 1 > 1;
if(a[mid]
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?