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