氣泡排序:
時間最優 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趟操作 已經歸位的數不用再比較 每一次都是得到比較列表中最大的數。氣泡排序演算法及其優化 氣泡排序的基本特徵是只能交換相鄰的元素。從下邊界開始,一趟掃瞄下來,可以把當前最大值頂到上邊界 如果沒有發生...