【Python】二分查找算法


二分查找:
在一段數字內,找到中間值,判斷要找的值和中間值大小的比較。
如果中間值大一些,則在中間值的左側區域繼續按照上述方式查找。
如果中間值小一些,則在中間值的右側區域繼續按照上述方式查找。
直到找到我們希望的數字。

 1 def search_data(data,data_find):
 2     # 中間值的索引號的定義:數組長度/2
 3     mid = int(len(data)/2)
 4     # 判斷從1開始的數字數組內查找
 5     if data[mid] >= 1:
 6         # 如果我們要找的值(data_find)比中間值(data[mid])小
 7         if data[mid] > data_find:
 8             print("你要找的數字比中間值[%s]小..." % data[mid])
 9             # 在中間值(data[mid])的左側繼續查找,在此函數中繼續循環
10             search_data(data[:mid],data_find)
11         # 如果我們要找的值(data_find)比中間值(data[mid])大
12         elif data[mid] < data_find:
13             print("你要找的數字比中間值[%s]大..." % data[mid])
14             # 在中間值(data[mid])的右側繼續查找,在此函數中繼續循環
15             search_data(data[mid:],data_find)
16         else:
17             # 如果我們要找的值(data_find)既不比中間值(data[mid])大,也不比中間值(data[mid])小,則就是它
18             print("這就是你要找的[%s]!" % data[mid])
19     else:
20         print("不好意思,沒有找到你要的值...")
21 
22 if __name__ == '__main__':
23     # 創建一個1到6000萬的連續數字數組
24     data = list(range(60000000))
25     # 調用函數找到95938的值
26     search_data(data,95938)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM