冒泡 選擇 插入 快速 二分查詢

2021-08-19 05:30:29 字數 1280 閱讀 1021

氣泡排序:

時間最優 o(n),最壞o(n2),穩定

def bubble(alist):

n = len(alist)

for j in range(n-1):

for i in range(n-1-j):

if alist[i]> alist[i+1]

alist[i],alist[i+1] = alist[i+1],alist[i]

選擇排序:

時間最優=最壞=o(n2),不穩定

def select_sort(alist):

n =len(alist)

for i in range(n-1):

min_index = i

for j in range(i+1,n):

if alist[j]插入排序:

時間最優o(n),最壞o(n2) 穩定

def insert_sort(alist):

n = len(alist)

for i in range(1,n):

for j in range(i,0,-1):

if alist[j]快速排序:

時間最優o(nlogn),最壞o(n2) 不穩定

def quick_sort(alist,start,end):

if start>=end:

return

mid = alist[start]

low = start

high = end

while low < high:

while low=mid:

high -=1

alist[low] = alist[high]

while low 二分查詢(遞迴):

def binary_search(alist,item):

n = len(alist)

start = 0

end = n-1

if n >0:

mid = (start+end) //2

if alist[mid]==item:

return true

elif item <=alist[mid]:

return binary_search(alist[:mid],item)

else:

return binary_search(alist[mid+1:],item)

else:

return false

Day20 冒泡 快速 選擇 插入 二分查詢

演算法 演算法是用來解決常見問題的方法 同乙個問題可以採用多種方法解決,不同的方法適用於不同的環境 排序指的是把一組數字按照某種順序排列好 排序演算法分很多次執行,每次負責把乙個數字放在合適的位置上 為了實現以上效果,可以先確定數字然後查詢位置,也可以先確定位置再查詢數字 通過不斷調整兩個數字的相互...

氣泡排序,選擇排序,插入排序,快速排序,二分查詢

氣泡排序 相鄰比較 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。選擇排序 找最小...

氣泡排序,快速排序,選擇排序,二分查詢

氣泡排序原理 每一趟只能將乙個數歸位,如果有n個數進行排序,只需將n 1個數歸位,也就是說要進行n 1趟操作 已經歸位的數不用再比較 每一次都是得到比較列表中最大的數。氣泡排序演算法及其優化 氣泡排序的基本特徵是只能交換相鄰的元素。從下邊界開始,一趟掃瞄下來,可以把當前最大值頂到上邊界 如果沒有發生...