二分法是一種快速查詢的方法,時間複雜度低,邏輯簡單易懂,總的來說就是不斷的除以2除以2...
例如需要查詢有序陣列arr裡面的某個關鍵字key的位置,那麼首先確認arr的中位數或者中點center,下面分為三種情況:12
3假如arr[center]>key,說明key在arr中心左邊範圍;
假如arr[center]假如arr[center]=key,說明key在arr中心。
範圍每次縮小一半,寫個while的死迴圈知道找到為止。
二分法查詢非常快且非常常用,但是唯一要求是要求陣列是有序的
我的另一篇部落格剛好介紹了氣泡排序可以去看看:
1http:
二分法的**如下:
1 #!/usr/bin/python3.4執行結果:2 # -*- coding: utf-8 -*-
3 4 def binarysearch(arr, key):
5 # 記錄陣列的最高位和最低位
6 min = 0
7 max = len(arr) - 1
8 9 if key in arr:
10 # 建立一個死迴圈,直到找到key
11 while true:
12 # 得到中位數
13 # 這裡一定要加int,防止列表是偶數的時候出現浮點資料
14 center = int((min + max) / 2)
15 # key在陣列左邊
16 if arr[center] > key:
17 max = center - 1
18 # key在陣列右邊
19 elif arr[center] < key:
20 min = center + 1
21 # key在陣列中間
22 elif arr[center] == key:
23 print(str(key) + "在陣列裡面的第" + str(center) + "個位置")
24 return arr[center]
25 else:
26 print("沒有該數字!")
27 28
29 if __name__ == "__main__":
30 arr = [1, 6, 9, 15, 26, 38, 49, 57, 63, 77, 81, 93]
31 while true:
32 key = input("請輸入你要查詢的數字:")
33 if key == " ":
34 print("謝謝使用!")
35 break
36 else:
37 binarysearch(arr, int(key))
原文出自ttyb
二分法是一種快速查詢的方法,時間複雜度低,邏輯簡單易懂,總的來說就是不斷的除以2除以2...
例如需要查詢有序陣列arr裡面的某個關鍵字key的位置,那麼首先確認arr的中位數或者中點center,下面分為三種情況:12
3假如arr[center]>key,說明key在arr中心左邊範圍;
假如arr[center]假如arr[center]=key,說明key在arr中心。
範圍每次縮小一半,寫個while的死迴圈知道找到為止。
二分法查詢非常快且非常常用,但是唯一要求是要求陣列是有序的
我的另一篇部落格剛好介紹了氣泡排序可以去看看:
1http:
二分法的**如下:
1 #!/usr/bin/python3.4執行結果:2 # -*- coding: utf-8 -*-
3 4 def binarysearch(arr, key):
5 # 記錄陣列的最高位和最低位
6 min = 0
7 max = len(arr) - 1
8 9 if key in arr:
10 # 建立一個死迴圈,直到找到key
11 while true:
12 # 得到中位數
13 # 這裡一定要加int,防止列表是偶數的時候出現浮點資料
14 center = int((min + max) / 2)
15 # key在陣列左邊
16 if arr[center] > key:
17 max = center - 1
18 # key在陣列右邊
19 elif arr[center] < key:
20 min = center + 1
21 # key在陣列中間
22 elif arr[center] == key:
23 print(str(key) + "在陣列裡面的第" + str(center) + "個位置")
24 return arr[center]
25 else:
26 print("沒有該數字!")
27 28
29 if __name__ == "__main__":
30 arr = [1, 6, 9, 15, 26, 38, 49, 57, 63, 77, 81, 93]
31 while true:
32 key = input("請輸入你要查詢的數字:")
33 if key == " ":
34 print("謝謝使用!")
35 break
36 else:
37 binarysearch(arr, int(key))
原文出自ttyb
演算法二分法
演算法之二分法 1 演算法 解決問題的高效方法 f 1 3 4 5 6 7 8 9 我想取出這個最大的數字9怎麼取出是不是可以通過for迴圈取出來 如 num 9 for i in f 註釋 通過for迴圈吧f的值一個一個的給i if num i 如果當i 9時 那麼print 列印findit 表示找...
二分法模板
我發現每次我做二分題目的時候,自己寫的upper bound和lower bound老是會出錯。 而且對於普通的整數二分的時候lb和rb不好...
二分法模板
二分法是一個非常高效的演算法,它常常用於計算機的查詢過程中。 二分答案 while left right else right mid 1 printf d ans p2390 地標訪問 題目描述 貝西在一條道路上旅行,道路上有許多地標,貝西想要在日落之前訪問儘可能多的路標。將道路視為一條數軸,貝西從...