算法图解一(二分查找)

今天主要跟大家分享二分查找算法。

有兴趣的朋友的可以去阅读《算法图解》这本书。

首先说下什么是算法。

算法定义:

一组完成任务的指令。任何的代码片段都可视为算法。

算法的优缺点:

不同的算法,性能高低不同。

算法的作用:

解决问题的技巧。不同的问题,可以选择不同解决方式。

二分查找法:

定义:在一个有序的元素列表中,查找元素是否包含在列表,或者是具体在某个索引位置。

EX:

例如我们要在100个有序的数组中,找到40这个数,那么在数组的哪个位置呢?

笨方法:一个挨着一个的找。找100次就找到了。

好方法:折半查找,首先找出整个数组中的中位数和要查找的数,做比较。

分为两堆,一堆大数,一堆小数。如果中间数<查找数,那么就从大数堆里去找。

再把大数堆分为两堆,以此类推。就最终能到找到,你要找的数。

图片来自《算法图解》

代码如下:


说到算法,接下来就得说下“大O表示法”。

大O表示法 是一种特殊的表示法,指出了算法的速度有多快。

之前提到笨方法,就是线性时间 O(n) , n:表示操作数。

二分查找法,就是对数时间 O(logn)。查找100个数的数组,最多只要7次。

(log^100,log指的是log2,log2^100相当于问“将多少个2相乘的结果为100”)

如果忘了对数是什么?请自行百度一下。由于不是这次主要内容,这里就不展开介绍。

今天,就给大家分享到这。明天会继续分享《选择排序+数组和链表》。


PS:

如果你阅读之后,有所收获。请记得点赞哦。o(* ̄︶ ̄*)o。你的支持将是我写作的动力。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章 算法简介 算法是一组完成任务的指令。 二分查找 二分搜索,也称折半搜索、对数搜索,是一种在有序数组中查找某...
    EruDev阅读 744评论 1 0
  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 5,910评论 0 13
  • 这篇文章是《图解算法》一书的摘抄总结。原书标题是《Grokking Algorithms》,grok是中文“意会”...
    SeanCheney阅读 3,137评论 0 14
  • 目录 [1. 顺序查找][2. 二分查找][3. 插值查找][4. 斐波那契查找][5. 树表查找][6. 分块查...
    jiangmo阅读 17,826评论 4 6
  • 减肥 努力 坚持 不放弃 一步一个脚印 脚踏实地 不瘦不买衣和裤 加油!
    小白龙_7c01阅读 143评论 0 1