#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大的數,放...