直接插入排序
直接插入排序(Direct Insertion Sort) 是常見流行的排序算法之一。在大部分元素已經排好序的序列數組中,插入排序的優勢得以體現。
排序原理
實際上是將要排序的數字列表分為有序表和無序表。有序表的數字都是有序的,而且規模逐個變大,從一個數字到列表長度的數字數目;無序表就是列表除去有序表剩下的數字,每次取第一個數字去與有序表中的數字做比較,並插入到有序表中正確的位置,無序表的規模逐個變小,最終全部取出,得到一個完整的有序表。
細節實現
Python實現
1 def dInsertionSort(arr, n): # 傳入要排序數字列表和列表長度 2 for i in range(1, n): # 將列表第1個元素作為有序表、第2到第n-1個元素作為無序表 3 if arr[i] < arr[i-1]: # 如果無序表中第一個元素比有序表中最大元素要小 則需要插入到有序表中 4 tmp = arr[i] 5 j = i-1 6 while (j >= 0 and arr[j] > tmp): 7 arr[j+1] = arr[j] 8 j -= 1 9 # 當無序表中第一個元素比完有序表中所有元素都沒有比它還小的(j<0) 10 # 或者它大於有序表中某個位置的數字,則將其放在當前位置的+1位置 11 arr[j+1] = tmp 12 13 if __name__ == '__main__': 14 arr = [20, 30, 10, 60, 50, 40] 15 n = len(arr) 16 dInsertionSort(arr, n) 17 print(arr)