python演算法9 16 二分查詢

2021-08-28 04:18:46 字數 1031 閱讀 7833

# 利用二分法的方式對有序序列進行查詢

# 基本原理:

# 對序列選擇中間元素,與給定元素進行比較,如果小於中間元素,則再與前一串行繼續二分比較;

# 否則,與後一串行二分比較,直到找到給定元素或者停止為止。

import random

range = 10

length = 5

flag = 0

pos = -1

list = random.sample(range(range),length)

goal = random.randint(0,range)

# 氣泡排序處理

for i in range(length-1): #控制迴圈次數

for j in range(length-i-1): #控制每次迴圈內容

if list[j] > list[j + 1]:

list[j + 1], list[j] = list[j], list[j + 1]

print('search ',goal,', in list:',list)

min = 0

max = 4

mid = max//2

while mid:

if list[mid] == goal:

flag = 1

pos = mid

break

elif list[max] == goal:

flag = 1

pos = max

break

elif list[mid]> goal:

max = mid

elif list[mid] < goal:

min = mid

mid = (min+max)//2

if flag:

print('find in ',pos+1,'th place')

else:

print('not found')

Python演算法 二分查詢

二分查詢 binary search 也被稱為折半查詢,是在乙個有序陣列中查詢特定元素位置的查詢演算法。二分查詢要求查詢序列必須採用順序儲存,且表中元素按關鍵字有序排列。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成...

Python 二分查詢演算法

二分前提是有序,否則不可以二分 二分查詢演算法的是時間複雜度o log n 函式可以分2類 bisect系,用於查詢index insort系,用於實際插入 預設重複時從右邊插入import bisect lst 37 88,20 50,30 65,41 50 newlst sorted lst 公...

python二分查詢演算法

楔子 如果有這樣乙個列表,讓你從這個列表中找到66的位置,你要怎麼做?l 2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88 你說,so easy!l.index 66 我們之所以用index方法可以找到,是...