Python 算法 01--二分查找

Python 算法 01--二分查找

Python 算法 01--二分查找


猜數遊戲

在程序中預設一個 0-9 之間的整數,讓用戶通過鍵盤輸入所猜的數,

如果大於預設的數,顯示 “遺憾,太大了”;小於預設的數,顯示 “遺憾,太小了”

如此循環,直至猜中該數,顯示 “預測 N 次,你猜中了!”,其中 N 是用戶輸入數字的次數

1、Python 分析

● “預設一個 0-9 之間的整數” 可以使用 random 庫中的 randint 函數

注意:randint (a,b) 區間是包含 a 和 b 的,而 range 函數左閉右合

● 用戶鍵盤輸入數字,使用 eval(input())

● 在確定循環次數時,我們用 for 循環,在不確定的時候用 while 循環

● 顯示 “預測 N 次,你猜中了!”, 其中 N 可以使用 format 函數格式化

2、Python 代碼

Python 算法 01--二分查找

3、策略

● 簡單查找:從 1 開始依次往上猜

每次猜測只能排除一個數字,如果數字是 100,那從 1 - 100 需要猜 100 次

● 二分查找:每次猜測中間的數字

在未猜測正確前,每次猜測都將餘下的數字排除一半。

Python 算法 01--二分查找


二分查找

Python 算法 01--二分查找

數組list

● low 和 high 表示數組 list 的開始和結束

low = 0 # 數組開始

high = len(list) - 1 # 數組結束

● 只要範圍沒有縮小到只包含一個元素,就檢查中間的元素

● 中間元素

mid = (low + high) // 2

如果 low + high 不是偶數,Python中// 向下取整


● Python 二分查找代碼

Python 算法 01--二分查找

● 二分查找的時間複雜度

Python 算法 01--二分查找

當第 K 次查找到元素,N/(2^K) >= 1

我們計算時間複雜度是按照[最壞的情況]進行計算

Python 算法 01--二分查找

所以二分查找的時間複雜度是log N (默認 log 的底數是 2)

注意:僅當列表是有序的時候,二分查找才管用


>>>


分享到:


相關文章: