Python實現二分法

Python實現二分查找

為什么需要二分查找

  1. 如果查找1-100內任意一個數字?

    1. 順序查找(簡單查找)

      從1開始或者100倒著來進行查找

      最快只需要一次,但是最慢則需要一百次蛉顽,差距相當大

      大O表示法為 O(n)

    2. 二分查找

      每次從中間進行查找尤筐,先從50,再判斷大還是小日熬,再從75或者25進行查找棍厌,依次類推

      由于每次都會排除一般的數字,所以最慢也只需要7次竖席,log2 n次

      大O表示法為O(log n)

      要求:必須是有序的情況

  2. 從上面的例子可以看出來耘纱,在有序的情況下,二分查找的效率是很高的

大O表示法

大O表示法是一種比較特殊的表示法毕荐,指出了算法的消耗時間速度束析,主要可以表示兩種算法之間時間消耗的不同增速

小明要準備去北京玩,為了更好的準備东跪,小明提前準備了100套線路方案畸陡,然后準備用程序驗證那種方案更加方便省時間鹰溜,如果使用簡單查找的話進行驗證,假設一套方案需要一秒鐘丁恭,那么100套就需要100毫秒(O(n)曹动,而使用二分查找的話只需要7毫秒(O(log n),這就整整差了十多倍的時間牲览,這僅僅只是100套墓陈,如果是一億套方案呢,簡單查找時間就會更久, 由此我們可以根據大O表示法比較兩個算法直接的時間增量速度以此判斷哪個算法更加便捷

python代碼實現二分查找

def BinarySearch(list1, num):

    min = 0               # 最小的下標
    max = len(list1) - 1  # 最大的下標
    i = 0
    while True:
        i += 1
        mid = (max + min) // 2 # 中間的下標每次向下取整
        if num > list1[mid] :
            min = mid + 1  # 小于需要的猜的數第献,則將最小下標變?yōu)橹虚g的贡必,又因為中間的已經猜過,所以要加1
        elif num == list1[mid] :
            print("找到數據")
            print("一共查找%d次"%i)
            break
        else :
            max = mid - 1  # 大于需要的猜的數庸毫,則將最大下標變?yōu)橹虚g的仔拟,又因為中間的已經猜過,所以要減1
        
if __name__ == "__main__":
    
    list1 = [i for i in range(0,100)]
    num = 5
    BinarySearch(list1, num)
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末飒赃,一起剝皮案震驚了整個濱河市利花,隨后出現的幾起案子,更是在濱河造成了極大的恐慌载佳,老刑警劉巖炒事,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異蔫慧,居然都是意外死亡挠乳,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門姑躲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來睡扬,“玉大人,你說我怎么就攤上這事肋联⊥叮” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵橄仍,是天一觀的道長韧涨。 經常有香客問我,道長侮繁,這世上最難降的妖魔是什么虑粥? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮宪哩,結果婚禮上娩贷,老公的妹妹穿的比我還像新娘。我一直安慰自己锁孟,他們只是感情好彬祖,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布茁瘦。 她就那樣靜靜地躺著,像睡著了一般储笑。 火紅的嫁衣襯著肌膚如雪甜熔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天突倍,我揣著相機與錄音腔稀,去河邊找鬼。 笑死羽历,一個胖子當著我的面吹牛焊虏,可吹牛的內容都是我干的。 我是一名探鬼主播秕磷,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼诵闭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了跳夭?” 一聲冷哼從身側響起涂圆,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤们镜,失蹤者是張志新(化名)和其女友劉穎币叹,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體模狭,經...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡颈抚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了嚼鹉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贩汉。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖锚赤,靈堂內的尸體忽然破棺而出匹舞,到底是詐尸還是另有隱情,我是刑警寧澤线脚,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布赐稽,位于F島的核電站,受9級特大地震影響浑侥,放射性物質發(fā)生泄漏姊舵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一寓落、第九天 我趴在偏房一處隱蔽的房頂上張望括丁。 院中可真熱鬧,春花似錦伶选、人聲如沸史飞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽构资。三九已至会宪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蚯窥,已是汗流浹背掸鹅。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拦赠,地道東北人巍沙。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像荷鼠,于是被迫代替她去往敵國和親句携。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內容

  • 4月3號工作總結允乐,周分值30分矮嫉,每天需要完成五分,今日完成兩分牍疏,完成率很差蠢笋,還是沒有做到,珍惜手中的每一位顧客鳞陨,對...
    于海霞閱讀 373評論 0 0
  • 我是一個女巫昨寞,手里有一瓶解藥和一瓶毒藥。 從出生開始厦滤,我就被冠以女巫的名號援岩,周圍的孩子看到我,都會怯生生地轉頭就跑...
    帕特里夏小姐閱讀 827評論 0 2
  • 其實無論是在工作還是生活中,阻礙我們去發(fā)現趟咆,去創(chuàng)造的添瓷,有時僅僅是我們心理上的障礙和心中的頑石而已。有什么樣...
    正小龍閱讀 228評論 0 0
  • 轉載 開啟Google的登陸二步驗證(即Google Authenticator服務)后用戶登陸時需要輸入額外由手...
    DragonRat閱讀 5,888評論 3 1