排序算法的實現
阿新 • • 發佈:2017-07-06
自己 積累 筆記 元素 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 whilej >= 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)
排序算法的實現