插入排序的分析過程

一、插入排序
什麼是插入排序?
插入排序的原理是什麼?
能不能用python代碼敲出一個實例?
帶着以上三個疑問來閱讀筆者的這篇文章;也正是如此,該篇的目的就是要清清楚楚的回答這些問題。
插入排序:首先,從字面意思上理解:是插入,將元素插入進去,因爲,跟中間性的插入密切相關;至於到底怎麼插入,我們通過例子來一步步看懂它的原理
比如:有一個列表【15、7、99、81、37、11、46】,請用插入排序的方法將其升序排列
  第一輪:第一個元素不動,把第2個元素與第1個元素去比較,如果第2個比第1個小,就可以插進去,也就是小的排在前面,大的排後面
        7、15
  第二輪:把99跟前面已排好的相比較,比7、15都要大,所以插不進去,只能排在後面
        7、15、99
  第三輪:把81跟前面已排好的相比較,比99小,插在99前面,比15大,插不進去,只能排15的後面
        7、15、81、99
  第四輪:把37跟前面已排好的相比較,比81小,比15大,插在它們兩個之間
        7、15、37、81、99
  第五輪:把11跟前面已排好的相比較,比15小,比7大,插進它們兩個之間
        7、11、15、37、81、99
  第六輪:把46跟前面已排好的相比較,比37大,比81小,插進它們兩個之間
        7、11、15、37、46、81、99
因此,此時已經排序完成。通過上面的一步步分析,其實質就是把後面的元素跟前面已排好的元素作大小比較,插進能插入的位置即可,插不進就直接排在後面,怎麼插入就是比大小
以上只是我的個人簡單分析,上面在分析過程中沒有寫出來的元素,並不是沒有,是存在的,只是我爲了一步步分析,沒有寫全。我在稿紙上是寫了的

看下面的python代碼實現:

def insert_Sort(arr):
    # 從下標爲1的元素開始選擇合適的位置插入,因爲下標爲0的只有一個元素,默認是有序的
    for i in range(len(arr)):
        m = i - 1
        n = arr[i]
        while m >= 0 and arr[m] > n:
            arr[m + 1] = arr[m]
            m = m - 1
        arr[m + 1] = n
    return arr


li3 = [15, 7, 99, 81, 37, 11, 46]
print(insert_Sort(li3))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章