python查詢演算法 二分法

2022-08-05 11:54:08 字數 3589 閱讀 9616

二分法是一種快速查詢的方法,時間複雜度低,邏輯簡單易懂,總的來說就是不斷的除以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 地標訪問 題目描述 貝西在一條道路上旅行,道路上有許多地標,貝西想要在日落之前訪問儘可能多的路標。將道路視為一條數軸,貝西從...