本文介绍: 二分的初始区间应当能覆盖到所有可能返回的结果。首先,二分下界是0是显然的,但是二分上界是n-1还是n呢?考虑到要查询元素有可能比序列中的所有元素都要大,此时应当返回n(即假设它存在,它应该在的位置),因此二分上界是n,故二分的初始区间为[low,high]=[0,n]
概念
二分查找(Binary Search)算法,也叫折半查找算法。二分查找的思想非常简单,有点类似分治的思想。二分查找针对的是一个有序的数据集合,每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0。
为了方便理解,我们以数组
1,3,5,7,11,13,17,19,23,29,31,37,41,43,53,59,在数组中查找37为例,制作了一张查找过程动图,其中low标示左下标,high标示右下标,mid标示中间值下标
可以看出二分查找在查找数字 37 时只需3次,而顺序查找 查找37时需要11次。
应用场景
二分搜索用于在一个单调或者局部单调有序数组中查找一个符合某些条件的值,时间复杂度为O(logN)
代码模板
OJ练习
寻找指定元素1
题目描述
在一个严格递增序列A中寻找一个指定元素x,如果能找到,那么输出它的下标;如果不能找到,那么输出。
输入描述
输出描述
样例
题解
寻找指定元素2
题目描述
输入描述
输出描述
样例
题解
寻找指定元素3
题目描述
输入描述
输出描述
样例
题解
寻找指定元素4
题目描述
输入描述
输出描述
样例
题解
寻找指定元素5
题目描述
输入描述
输出描述
样例
题解
寻找指定元素6
题目描述
输入描述
输出描述
样例
题解
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。