漫画:什么是二分查找?
戳藍(lán)字“CSDN云計(jì)算”關(guān)注我們哦!
作者 | 蠢萌的小灰
來源 | 程序員小灰
—————? 第二天? —————
什么意思呢?我們來舉兩個(gè)栗子:
給定一個(gè)有序數(shù)組?
2,5,7,9,12,14,20,26,30
Case 1:
Case 2:
————————————
為什么說這樣效率最高呢?因?yàn)槊恳淮芜x擇數(shù)字,無論偏大還是偏小,都可以讓剩下的選擇范圍縮小一半。
給定范圍0到1000的整數(shù):
第一次我們選擇500,發(fā)現(xiàn)偏大了,那么下一次的選擇范圍,就變成了1到499:
第二次我們選擇250,發(fā)現(xiàn)還是偏大了,那么下一次的選擇范圍,就變成了1到249:
第三次我們選擇125,發(fā)現(xiàn)偏小了,那么下一次的選擇范圍,就變成了126到249:
以此類推,最壞的情況需要猜測(cè)多少次呢?答案是 log1000 = 10次,也就是讓原本的區(qū)間范圍進(jìn)行10次 “折半”。
剛才我們所分析的是猜數(shù)字的游戲。如果我們把場(chǎng)景轉(zhuǎn)換成最初的面試問題:在包含1000個(gè)整型元素的有序數(shù)組中查找某個(gè)特定整數(shù),又該如何去做呢?
同樣道理,我們可以首先判斷下標(biāo)是499的元素(因?yàn)閿?shù)組下標(biāo)從0開始,到999結(jié)束),如果元素大于要查找的整數(shù),我們?cè)偃ヅ袛嘞聵?biāo)是249的元素,然后判斷下標(biāo)124的元素......以此類推,直到最終找到想要的元素,或者選擇范圍等于0為止。
上述這個(gè)過程,就是所謂的二分查找算法,查找的時(shí)間復(fù)雜度是log(n)。
福利
掃描添加小編微信,備注“姓名+公司職位”,加入【云計(jì)算學(xué)習(xí)交流群】,和志同道合的朋友們共同打卡學(xué)習(xí)!
推薦閱讀:
IEEE 回應(yīng)禁止華為系審稿人;WiFi聯(lián)盟、藍(lán)牙聯(lián)盟已恢復(fù)華為成員資格;中國(guó)計(jì)算機(jī)學(xué)會(huì):暫時(shí)中止與IEEE通信學(xué)會(huì)合作……
ARM 發(fā)布新一代 CPU 和 GPU,實(shí)現(xiàn) 20% 性能提升!
前端開發(fā) 20 年變遷史
北漂杭漂的程序員,是如何買到第一套房子?
“愛裝X”開源組織:“教科書級(jí)”AI知識(shí)樹究竟長(zhǎng)什么樣?
500行Python代碼打造刷臉考勤系統(tǒng)
權(quán)游播完了, 你在罵爛尾, 有人卻悄悄解鎖了新操作……
真香,朕在看了!
總結(jié)
以上是生活随笔為你收集整理的漫画:什么是二分查找?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不小心用了诚e赊付款怎么办
- 下一篇: Boost:boost :: bind相