























折半查找(也称为二分查找)是一种高效的查找算法常用于有序数组中查找某个特定元素的位置。
基本思路如下:
1. 初始化左边界和右边界,将左边界设为0(为了方便计算也可以为1,后面的元素依次递进 + 1 ),将右边界设为数组长度减1。
2. 取中间位置的元素,与目标元素进行比较。说明:中间元素的位置为(low+high)/2,然后向下取整(取整数部分)。
3. 如果中间元素等于目标元素,则返回中间元素的索引。
4. 如果中间元素大于目标元素,则在左半部分继续查找,将右边界更新为中间元素的前一个索引。
5. 如果中间元素小于目标元素,则在右半部分继续查找,将左边界更新为中间元素的后一个索引。
重复步骤2至5,直到左边界大于右边界,表示查找失败。
说明:由查找的中间元素按照先后顺序组成的就是比较关键字的序列
折半(二分)查找是一种基于有序数组的查找算法,其时间复杂度为 O(logn)。
举个例子:二分查找,19,24,30,35,40,47,55,70,91,比较的关键字可能的序列 ( B )
A. 40,55,91
B. 40,24,30
C. 40,35,24
D. 40,47,70

分析:
一般查找一个小于中间元素的值,查找一个大于中间元素的值,基本就能列出关键序列了
1)查找的目标元素为 70
初始化边界: low=1 high=9
中间元素: (1+9)/2 = 5 元素为 40 ;因为40 < 70 则 low = 6
中间元素: (6+9)/2 = 7 元素为 55 ;因为55 < 70 则 low = 8
中间元素: (8+9)/2 = 8 元素为 70 ;因为70 = 70 所以找到目标元素了
2)查找的目标元素为 38
初始化边界: low=1 high=9
中间元素: (1+9)/2 = 5 元素为 40 ;因为 38 < 40 则 high = 4
中间元素: (1+4)/2 = 2 元素为 24 ;因为 24 < 38 则 low = 3
中间元素: (3+4)/2 = 3 元素为 30 ;因为 30 < 38 则 low = 4
中间元素:(4+4)/2 = 4 元素为 35 ; 因为 35 < 38 则查找不到目标元素
基于上面的分析,可以找到答案为 B
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。