python查詢演算法 二分法

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

二分法是一種快速查詢的方法,時間複雜度低,邏輯簡單易懂,總的來說就是不斷的除以2除以2...

例如需要查詢有序陣列arr裡面的某個關鍵字key的位置,那麼首先確認arr的中位數或者中點center,下面分為三種情況:12

3假如arr[center]>key,說明key在arr中心左邊範圍;

假如arr[center]假如arr[center]=key,說明key在arr中心。

範圍每次縮小一半,寫個while的死迴圈知道找到為止。

二分法查詢非常快且非常常用,但是唯一要求是要求陣列是有序的

我的另一篇部落格剛好介紹了氣泡排序可以去看看:

二分法的**如下:

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的死迴圈知道找到為止。

二分法查詢非常快且非常常用,但是唯一要求是要求陣列是有序的

我的另一篇部落格剛好介紹了氣泡排序可以去看看:

二分法的**如下:

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

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

查詢演算法 二分法

二分查詢演算法的基本思想 一.首先確定該區間的中間元素位置 mid low high 2 mid代表區間內中間元素的位置 low代表區間內最左邊元素的位置 high代表區間內最右邊元素的位置 二.將待查key元素值與中間元素mid的值 array mid 比較,如果相等,則查詢成功,否則確定新的查詢...

演算法 二分法查詢

1 2 二分法實驗 31 設a 0 n 1 是乙個已排好序的陣列.4請改寫二分搜尋演算法,使得當搜尋元素x不在陣列中時,5返回小於x的最大元素的位置i和大於x的最大元素位置j.6當搜尋元素在陣列中時,i和j相同,均為x在陣列中的位置.72 設有n個不同的整數排好序後存放於t 0 n 1 中,8若存在...