【算法图解】 之 [二分查找法] 详解
入門算法學習,看的第一本是深入淺出的《算法圖解》一書,本博客是對《算法圖解》一書的學習筆記,將書中的分享的算法示例用Python3語言實現。
如果你也想要閱讀這本書,百度云盤鏈接:https://pan.baidu.com/s/1s967vfgEBd1vSrfwVI9Y3g 提取碼:【be9k】
或者也可以留言你的郵箱,我將PDF共享給你~
二分查找
- 二分查找是一種算法,其輸入是一個有序的元素列表(必須有序),如果要查找的元素包含在列表中,二分查找返回其位置;否則返回null。
二分查找工作原理
大家一定玩過‘猜數’這個游戲,就是我隨便想一個1~100的數字。
你的目標是以最少的次數猜到這個數字。你每次猜測后,我會說小了、大了或對了。
假設你從1開始依次往上猜,猜測過程會是這樣。
這是簡單查找,更準確的說法是傻找。每次猜測都只能排除一個數字。如果我想的數字是99,
你得猜99次才能猜到!
最佳的查找方法是:
這就是二分查找,你學習了第一種算法!每次猜測排除的數字個數如下。
所以,不管我心里想的是哪個數字,你在7次之內都能猜到,因為每次
猜測都將排除很多數字!
僅當列表有序的時候,二分查找才管用!!
二分查找–案例
案例:函數binary_search接收一個"有序數組"和"一個元素"。
如果,指定的元素包含在數組中,這個函數將返回其位置。
運行時間
簡單查找逐個地檢查數字,如果列表包含100個數字,最多需要猜100次。如果列表包含40億個數字,最
多需要猜40億次。換言之,最多需要猜測的次數與列表長度相同,這被稱為線性時間(linear time)。
二分查找則不同。如果列表包含100個元素,最多要猜7次;如果列表包含40億個數字,最多
需猜32次。厲害吧?二分查找的運行時間為對數時間(或log時間)。
總結
以上是生活随笔為你收集整理的【算法图解】 之 [二分查找法] 详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu 查看默认软件安装位置
- 下一篇: 安卓APP_ 控件(4)—— Image