python常用程式演算法
一。氣泡排序:
1.氣泡排序是將無序的數字排列成從小到大的有序組合:
過程:對相鄰的兩個元素進行比較,對不符合要求的資料進行交換,最後達到資料有序的過程。
規律:
1.氣泡排序的趟數時固定的:n-1
(n-1)/2
(n-1)/2注意:n = 資料個數,排序過程中需要臨時變數儲存要交換的資料
l=[688, 888, 711,999,1,4,6] for i in range(len(l)-1): for j in range(len(l)-1): if l[j]>l[j+1]: tmp=l[j] l[j]=l[j+1] l[j+1]=tmp print(l)
二。選擇排序:
list=[10,3,5,2,9]
過程,迴圈當前列表,將當前迴圈到的值與餘下的每個數字相比較,如果比當前值小,就與當前值交換位置。
l=[688, 888, 711,999,1,4,6] for i in range(len(l)-1): for j in range(i+1,len(l)): if l[j]<l[i]: tmp=l[i] l[i]=l[j] l[j]=tmp print(l)
優化:每次找到最小值後不立即替換,而是等待本次迴圈結束再替換,減少了操作的次數,效率提高了
l=[688, 888, 711,999,1,4,6] for i in range(len(l)-1): Min=i for j in range(i+1,len(l)): if l[Min] > l[j]: Min=j tmp=l[Min] l[Min]=l[i] l[i]=tmp print(l)
三。插入排序:
插入排序(Insertion Sort)的基本思想是:將列表分為2部分,左邊為排序好的部分,右邊為未排序的部分,迴圈整個列表,每次將一個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子序列中的適當位置,直到全部記錄插入完成為止。
array=[9,8,7,6,5,4,3,2,1] for i in range(1,len(array)): current_val=array[i] current_position=i while current_position >0 and array[current_position-1] > current_val: array[current_position]=array[current_position-1] current_position-=1 array[current_position]=current_val print(array)