三大基本排序演算法
- 冒泡排序
- 選擇排序
- 插入排序
冒泡排序
冒泡排序(Bubble Sort)是一種簡單直觀的排序演算法,它重復地走訪過串列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來,走訪數列的作業是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成,這個演算法的名字由來是因為越小的元素會經由交換慢慢"浮"到數列的頂端,
代碼
def BubbleSort(lst):
top = len(lst) #確定串列長度
for i in range(top): #遍歷次數在此
top -= 1 #確保遍歷一次后不再重復比較最右邊最大的數字
for j in range(top):
if lst[j] > lst[j+1]:
lst[j],lst[j+1] = lst[j+1],lst[j]
return lst
選擇排序
選擇排序是一種簡單直觀的排序演算法,它通過反復遍歷串列,選出最大/小的數字按順序排到左/右邊,直到全部數字排序完畢,
代碼
def SelectionSort(lst):
for i in range(len(lst)-1):
flag = i
for j in range(i+1,len(lst)):
if lst[j] < lst[flag]:
flag = j
if i != flag: #如果i的位置不是最小數,則交換
lst[i],lst[flag] = lst[flag],lst[i]
return lst
插入排序
類似于打牌的排序演算法,從左至右依次把未排序列的數字插入已排序列之中,
def InsertionSort(lst):
for i in range(len(lst)):
flag = i -1 #插旗
current = lst[i]
while flag >= 0 and lst[flag] > current: #從旗幟位置遞減,依次尋找插空位置
lst[flag+1] = lst[flag]
flag -= 1
lst[flag+1] = current
return lst
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/163560.html
標籤:其他



