算法圖解一(二分查找)

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

有興趣的朋友的可以去閱讀《算法圖解》這本書。

首先說(shuō)下什么是算法。

算法定義:

一組完成任務(wù)的指令。任何的代碼片段都可視為算法。

算法的優(yōu)缺點(diǎn):

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

算法的作用:

解決問(wèn)題的技巧。不同的問(wèn)題,可以選擇不同解決方式。

二分查找法:

定義:在一個(gè)有序的元素列表中,查找元素是否包含在列表,或者是具體在某個(gè)索引位置。

EX:

例如我們要在100個(gè)有序的數(shù)組中,找到40這個(gè)數(shù),那么在數(shù)組的哪個(gè)位置呢?

笨方法:一個(gè)挨著一個(gè)的找。找100次就找到了。

好方法:折半查找,首先找出整個(gè)數(shù)組中的中位數(shù)和要查找的數(shù),做比較。

分為兩堆,一堆大數(shù),一堆小數(shù)。如果中間數(shù)<查找數(shù),那么就從大數(shù)堆里去找。

再把大數(shù)堆分為兩堆,以此類推。就最終能到找到,你要找的數(shù)。

圖片來(lái)自《算法圖解》

代碼如下:


說(shuō)到算法,接下來(lái)就得說(shuō)下“大O表示法”。

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

之前提到笨方法,就是線性時(shí)間 O(n) , n:表示操作數(shù)。

二分查找法,就是對(duì)數(shù)時(shí)間 O(logn)。查找100個(gè)數(shù)的數(shù)組,最多只要7次。

(log^100,log指的是log2,log2^100相當(dāng)于問(wèn)“將多少個(gè)2相乘的結(jié)果為100”)

如果忘了對(duì)數(shù)是什么?請(qǐng)自行百度一下。由于不是這次主要內(nèi)容,這里就不展開介紹。

今天,就給大家分享到這。明天會(huì)繼續(xù)分享《選擇排序+數(shù)組和鏈表》。


PS:

如果你閱讀之后,有所收獲。請(qǐng)記得點(diǎn)贊哦。o(* ̄︶ ̄*)o。你的支持將是我寫作的動(dòng)力。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一章 算法簡(jiǎn)介 算法是一組完成任務(wù)的指令。 二分查找 二分搜索,也稱折半搜索、對(duì)數(shù)搜索,是一種在有序數(shù)組中查找某...
    EruDev閱讀 838評(píng)論 1 0
  • 一些概念 數(shù)據(jù)結(jié)構(gòu)就是研究數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)以及它們之間相互關(guān)系,并對(duì)這種結(jié)構(gòu)定義相應(yīng)的運(yùn)算,而且確保經(jīng)過(guò)這...
    Winterfell_Z閱讀 6,612評(píng)論 0 13
  • 這篇文章是《圖解算法》一書的摘抄總結(jié)。原書標(biāo)題是《Grokking Algorithms》,grok是中文“意會(huì)”...
    SeanCheney閱讀 3,211評(píng)論 0 14
  • 目錄 [1. 順序查找][2. 二分查找][3. 插值查找][4. 斐波那契查找][5. 樹表查找][6. 分塊查...
    jiangmo閱讀 18,219評(píng)論 4 6
  • 減肥 努力 堅(jiān)持 不放棄 一步一個(gè)腳印 腳踏實(shí)地 不瘦不買衣和褲 加油!
    小白龍_7c01閱讀 158評(píng)論 0 1

友情鏈接更多精彩內(nèi)容