美文网首页
二分搜索

二分搜索

作者: 天天剁手狂狂狂 | 来源:发表于2020-12-06 11:03 被阅读0次

初始条件: 数组A, 搜索下边界L是0, 上边界H是9

第一次搜索: 计算中间点位置:M = (下边界L + 上边界) / 2 = (0 + 9) / 2 = 4,A[4]的值是16, 小于23,因此,数字23在数组中出现的下标位置应该大于4,于是搜索的范围应该是在数组分割之后的右边部分,于是下边界L置为5

第二次搜索:计算中间点位置:M = (下边界L + 上边界) / 2 = (5 + 9) / 2 = 7,A[7]的值是56, 大于23,因此,数字23在数组中出现的下标位置应该小于7,于是搜索的范围应该是在数组分割之后的左边部分,于是上边界H置为6

第三次搜索:计算中间点位置:M = (下边界L + 上边界) / 2 = (5 + 6) / 2 = 5,A[5]的值是23, 搜索结束,返回5

整个搜索过程如下图所示:

从以上过程可以看出:二分法每次都将搜索范围减少一半,是一种非常高效的方法,事实上,其时间复杂度是O(log n)。

最简单的二分搜索

二分法看起来非常简单,但是据说90%的程序员都写不对这个算法,这里,我们从最简单的情况开始,把这个算法写对。

最简单的情况是数组中元素严格按照升序排列。

思路如下:

若数组中间值小于查询值,则说明查询值的位置一定在右半部分(不包含中间值)

若数组中间值等于查询值,则说明查询值的位置是中间位置

若数组中间值大于查询值,则说明查询值的位置一定在左半部分(不包含中间值)

相关文章

  • Algorithm进阶计划 -- 二分搜索

    二分搜索二分搜索模板二分搜索运用 1. 二分搜索模板 二分搜索(二分查找)也称折半查找(Binary Search...

  • 算法-二分搜索算法

    算法:二分搜索算法(折半查找算法)时间复杂度: 二分搜索算法概述 二分搜索算法伪代码 二分搜索算法实现 二分搜索算...

  • 搜索算法

    顺序搜索 二分搜索

  • 二分搜索(Binary_Search)

    1. 二分搜索是什么? 二分搜索(英语:binary search),也叫折半搜索(英语:half-interva...

  • AVL 树

    一:什么是 AVL 树? 在我的上一篇文章《二分搜索树与二分查找法》中,详细介绍了二分搜索树这种数据结构。二分搜索...

  • 二分算法-LeetCode 69

    二分算法-LeetCode 69 二分算法 二分算法模板, 二分搜索即搜索一个数,如果存在,返回其索引,否则返回-...

  • Pearls9. 代码调优

    [TOC] 问题:在包含1000个整数的表中进行二分搜索: 二分搜索的调优 说明:在二分搜索中通常不需要代码调优 ...

  • Pearls4 编写正确的程序

    4.1 二分搜索

  • 手敲数据结构——使用二分搜索树实现Set

    关于实现二分搜索树,可以看前面的文章 手敲数据结构——二分搜索树

  • 分治算法(二分搜索)

    每日一言 : 当我们真正热爱这世界时,我们才真正生活在这世上。——泰戈尔 二分搜索 什么是二分搜索 二分搜索又叫二...

网友评论

      本文标题:二分搜索

      本文链接:https://www.haomeiwen.com/subject/yzkowktx.html