氣泡排序(bubble sort)是一種簡單直觀的排序演算法。它重複地走訪過列表,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢"浮"到數列的頂端。
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
選擇排序是一種簡單直觀的排序演算法。它通過反覆遍歷列表,選出最大/小的數字按順序排到左/右邊,直到全部數字排序完畢。
if i != flag: #如果i的位置不是最小數,則交換
lst[i],lst[flag] = lst[flag],lst[i]
return 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
演算法筆記學習之三種基本排序
基本排序 氣泡排序,選擇排序,插入排序。高等排序 快速排序,歸併排序,希爾排序,堆排序。這是我個人的理解,後三種排序是基於前三種排序的基礎上進行完全完善的。時間複雜度 o n 2 空間複雜度 o 1 舉例 3 4 1 5 2 按照要求把它們從小到大的順序排列。第一趟 3 4 1 5 2 a 0 與a...
python之三大查詢演算法
演算法簡介 順序查詢又稱為線性查詢,是一種最簡單的查詢方法。適用於線性表的順序儲存結構和鏈式儲存結構。該演算法的時間複雜度為o n 基本思路 從第乙個元素m開始逐個與需要查詢的元素x進行比較,當比較到元素值相同 即m x 時返回元素m的下標,如果比較到最後都沒有找到,則返回 1。優缺點 缺點 是當n...
排序演算法之三 直接選擇排序
簡單選擇排序 selection sort 在八大排序中是最容易理解的部分 演算法 從小到大 在要排序的序列中,從頭到尾遍歷,選出最小的數與第乙個位置的數交換。在剩餘的序列中,從頭到尾遍歷,選出最小的數與剩餘序列第乙個位置的數交換 原序列第二個位置 不斷地迴圈下去,直至序列只剩下乙個數。演算法演示 ...