二分查找/二分答案
0.前言二分算法Binary Search也叫折半查找是一种在有序数据集合中高效查找目标值的算法。它通过不断将查找范围缩小一半快速定位目标时间复杂度为 O(logn)远优于线性查找的 O(n)。1.原理假设有一个升序排列的数组arr和一个目标值target二分查找的过程如下定义两个指针分别指向数组的起始位置和结束位置。计算中间索引并比较该位置上的元素与目标值的关系。如果相等则返回当前索引如果小于目标值则调整左边界继续向右半部分查找反之则调整右边界向左半部分查找。当左右边界重合仍未找到目标值时说明数据集中不存在此值。2.代码模板#includebits/stdc.h using namespace std; //检查是否符合条件 bool check(int a){ return ; } int main(){ int n,k; cinnk; int a[100055]; for(int i1;in;i){ cina[i]; } int l1,r1e8; while(lr){ int m(lr)1; // 或m(lr)/2 if(check(m)){ lm; }else{ rm; } } coutl; }3.时间复杂度由于每次迭代都将问题规模减半因此时间复杂度为 O(log n)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2452799.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!