數據結構與算法:直接插入排序(原理講解+python實現)


直接插入排序

直接插入排序(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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM