問題的解決思路:
就是當插入第i個的時候,前面的[i- 1]個已經排好了,這時候lst[i]就倒過來逐個和前面的關鍵字順序進行比較,找到插入位置即將lst[i]插入,原來位置上的物件整體往後移。
**如下:
1首先來講講外層的for迴圈:它是從列表的第乙個元素開始。(這裡就有個疑問了,為什麼不是從零開始呢?其實通過上面的那張我們可以知道,在最開始的時候會有乙個初始關鍵字,方便跟後面的元素進行比較。),然後對整個列表進行乙個迴圈。definsert_sort(lst):
2for i in range(1, len(lst) - 1):
3 temp =lst[i]
4for j in range(i - 1, -1, -1):
5if lst[j] >temp:
6 lst[j + 1] =lst[j]
7 lst[j] =temp
8return lst
然後就是內層的for迴圈:j是對之前已經排好了的關鍵字進行的一次迴圈,然後通過這次迴圈將lst[i]插入進去,當通過這次迴圈temp找到比它小的那個數的時候,就把temp插入進去。
注意:內層的迴圈是在已排好的列表中從後往前查詢,當找到比自己小的數的時候,就插到它的後面,不能是從前往後,那樣不一定可以插隊正確的位置。
Python插入排序演算法
插入排序 英語 insertion sort 是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。插入排序 n len alist...
python 插入排序演算法
描述 插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料,演算法適用於少量資料的排序,時間複雜度為o n 2 是穩定的排序方法。插入演算法把要排序的陣列分成兩部分 第一部分包含了這個陣列的所有元素,但將最後乙個元素除外 讓陣列多乙個空間才有插入的位置 ...
Python演算法 插入排序
插入排序 英語 insertion sort 是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用in place排序 即只需用到o 1 的額外空間的排序 因而在從後向前掃瞄過程中,需要反覆把已排序元素...