1. 程式人生 > >排序算法的實現

排序算法的實現

自己 積累 筆記 元素 tmp 排序算法 暑假 昨天 個數

昨天看網易公開課中可汗學院的視頻實現排序,就想著寫一下排序,暑假上課也沒時間弄其他的,

乘著午休來碼一碼,積累自己的代碼筆記。

插入排序是指有一個有序的列表,往這個列表裏插入一個數,插入後列表依舊有序

它的時間復雜度平均為O(n^2) 不適合數據量特別大的 數據量很小是個不錯的選擇

 1 #插入排序
 2 a = [7, 1, 3, 2, 8, 6]
 3 
 4 def insert_sort(list):
 5     for i in range(1,len(list)):
 6         tmp = a[i]
 7         j = i - 1
 8         while
j >= 0: 9 if a[j] > tmp: 10 a[j+1] = a[j] 11 a[j] = tmp 12 j -= 1 13 return list 14 15 a = insert_sort(a) 16 17 print(a)

接下來是最經典的冒泡排序 比較兩個相鄰的列表中的元素

最好時間復雜度為O(n) 最壞時間復雜度為O(N^2) 總的平均時間復雜度為O(N^2)

 1 #冒泡排序
 2 a = [7, 1, 3, 2, 8, 6]
3 4 def bubble_sort(list): 5 for i in range(len(list)-1): 6 for j in range(i+1,len(list)): 7 if list[i] > list[j]: 8 list[i], list[j] = list[j], list[i] 9 return list 10 11 a = bubble_sort(a) 12 13 print(a)

直接選擇排序:

第1趟,在待排序記錄r1 ~ r[n]中選出最小的記錄,將它與r1交換;第2趟,在待排序記錄r2 ~ r[n]中選出最小的記錄,將它與r2交換;以此類推,第i趟在待排序記錄r[i] ~ r[n]中選出最小的記錄,將它與r[i]交換,使有序序列不斷增長直到全部排序完畢

 1 #直接選擇排序
 2 a = [7, 1, 3, 2, 8, 6]
 3 
 4 def select_sort(list):
 5     for i in range(0,len(list)):
 6         min = i
 7         for j in range(i+1,len(list)):
 8             if a[min] > a[j]:
 9                 min = j
10         list[min], list[i] = list[i], list[min]
11     return list
12 
13 a = select_sort(a)
14 
15 print(a)

排序算法的實現