Python資料結構與演算法5 排序演算法1

2021-10-04 19:28:40 字數 1711 閱讀 3801

#1. 氣泡排序

defbubble_sort

(alist)

: n =

len(alist)

for i in

range

(n-1):

# 第一層迴圈:冒泡需要進行的輪數

count =

0for j in

range

(n-1

-i):

#第二層迴圈:遍歷兩兩比較

if alist[j]

> alist[j+1]

: alist[j]

, alist[j+1]

= alist[j+1]

, alist[j]

count +=

1if count ==0:

#若一次遍歷沒有交換位置,則排序已完成,直接輸出結果

return

最優時間複雜度:o(n):正好為有序序列時,只需遍歷一次

最壞時間複雜度:o(n2)

穩定性:穩定

# 2. 選擇排序

defselection_sort

(alist)

: n =

len(alist)

for i in

range

(n-1):

# 第一層迴圈:選擇需要進行的輪數

# 首先假定迴圈起始元素為最小元素

min_index = i

for j in

range

(i+1

, n)

:# 如發現更小元素,更改最小索引值

if alist[j]

< alist[min_index]

: min_index = j

alist[i]

, alist[min_index]

= alist[min_index]

, alist[i]

最優時間複雜度:o(n2)

最壞時間複雜度:o(n2)

穩定性:不穩定:公升序每次選最大值時

# 3. 插入排序

definsertion_sort

(alist)

: n =

len(alist)

for i in

range(1

,n):

#從第二個元素開始向後遍歷

while i >0:

if alist[i-1]

> alist[i]

:# 將序列調整為有序序列

alist[i-1]

, alist[i]

= alist[i]

, alist[i-1]

i -=

1# 從後向前掃瞄

else

:# 若發現無需調整,直接退出迴圈

break

最優時間複雜度:o(n): 正好為有序序列時,只需遍歷一次

最壞時間複雜度:o(n2)

穩定性:穩定

Python 資料結構與演算法 快排

1.先從待排序的陣列中找出乙個數作為基準數 取第乙個數即可 然後將原來的陣列劃分成兩部分 小於基準數的左子陣列和大於等於基準數的右子陣列。然後對這兩個子陣列再遞迴重複上述過程,直到兩個子陣列的所有數都分別有序。最後返回 左子陣列 基準數 右子陣列 即是最終排序好的陣列。def quicksort n...

資料結構與演算法 python排序演算法 氣泡排序

排序演算法 英語 sorting algorithm 是一種能將一串資料依照特定順序進行排列的一種演算法。排序演算法的穩定性 穩定排序演算法會讓原本有相等鍵值的紀錄維持相對次序。也就是如果乙個排序演算法是穩定的,當有兩個相等鍵值的紀錄r和s,且在原本的列表中r出現在s之前,在排序過的列表中r也將會是...

資料結構與演算法 python實現快排

python實現快速排序 記錄第乙個坑的值,在最後做填充 i start 初始位置和末尾會發上改變,所以需要先做好記錄 j end m end 初始從最後面開始挖坑,所以先記錄 while start end while start end and l start x 找出比假定的中位數x大的數,放...