1、冒泡排序
冒泡排序是最簡單也是最容易理解的排序方法,其原理就是重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。

1 # 冒泡排序 2 def bubbleSort(li): 3 n = len(li) 4 for i in range(n-1): 5 for j in range(n-i-1): 6 if li[j] > li[j+1]: 7 li[j],li[j+1] = li[j+1],li[j] 8 9 if __name__ == '__main__': 10 li = [3,44,38,5,47,15,36,26,27,2,46,4,19,50,48] 11 bubbleSort(li) 12 print(li)
2、選擇排序
基本思想:第1趟,在待排序記錄r1 ~ r[n]中選出最小的記錄,將它與r1交換;第2趟,在待排序記錄r2 ~ r[n]中選出最小的記錄,將它與r2交換;以此類推,第i趟在待排序記錄r[i] ~ r[n]中選出最小的記錄,將它與r[i]交換,使有序序列不斷增長直到全部排序完畢。

1 # 選擇排序 2 def selectSort(li): 3 n = len(li) 4 for i in range(n): 5 temp = i 6 for j in range(temp,n): 7 if li[temp] > li[j]: 8 li[temp],li[j] = li[j],li[temp] 9 10 if __name__ == '__main__': 11 li = [3,44,38,5,47,15,36,26,27,2,46,4,19,50,48] 12 selectSort(li) 13 print(li)
3、快速排序
使用了分治法策略以及遞歸實現,通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。

1 # 快速排序 2 def quickSort(li): 3 if li: 4 mark=li[0] 5 little=[m for m in li if m<mark] 6 big=[x for x in li if x>mark] 7 return quickSort(little)+[mark]+quickSort(big) 8 else: 9 return [] 10 if __name__=='__main__': 11 li = [3,44,38,5,47,15,36,26,27,2,46,4,19,50,48] 12 print(quickSort(li))
4、插入排序
插入排序的基本操作就是將一個數據插入到已經排好序的有序數據中,從而得到一個新的、個數加一的有序數據,算法適用於少量數據的排序,時間復雜度為O(n^2)。是穩定的排序方法。插入算法把要排序的數組分成兩部分:第一部分包含了這個數組的所有元素,但將最后一個元素除外(讓數組多一個空間才有插入的位置),而第二部分就只包含這一個元素(即待插入元素)。在第一部分排序完成后,再將這個最后元素插入到已排好序的第一部分中。

1 # 插入排序 2 def insertSort(li): 3 length = len(li) 4 for i in range(1,length): 5 x = li[i] 6 for j in range(i,-1,-1): 7 # j為當前位置,試探j-1位置 8 if x < li[j-1]: 9 li[j] = li[j-1] 10 else: 11 # 位置確定為j 12 break 13 li[j] = x 14 15 if __name__ == '__main__': 16 li = [3,44,38,5,47,15,36,26,27,2,46,4,19,50,48] 17 insertSort(li) 18 print(li)