软件设计师考试 - 二分查找

软件设计师考试 - 二分查找

折半查找(也称为二分查找)是一种高效的查找算法常用于有序数组中查找某个特定元素的位置。

基本思路如下:

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

image

  分析:

  一般查找一个小于中间元素的值,查找一个大于中间元素的值,基本就能列出关键序列了

  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 则查找不到目标元素

 

  基于上面的分析,可以找到答案为

posted @ 2026-04-16 16:15  欢乐豆123  阅读(15)  评论(0)    收藏  举报