Python插入排序(1)

2022-07-22 08:12:10 字數 1919 閱讀 3468

python**: 

"""

插入排序(1)

將未排序的數逐個插入到已排序的陣列中

"""lst = [3, 6, 9, 1, 4, 7, 2, 8, 5, 0]

print("

排序前: %s\r\n

" %lst)#輪

for i in range(1,len(lst)): #

未排序的陣列

print("

第%s輪

" %i)

#次for j in range(i): #

已排序的陣列(初始假設第乙個數已排序)

if lst[i] <=lst[j]:

print("

比較[%s]:%s [%s]:%s,需插入

" %(i, lst[i], j, lst[j]))

lst.insert(j, lst[i])

lst.pop(i+1)

print("

插入後: %s

" %lst)

break

else

:

print("

比較[%s]:%s [%s]:%s,不插入

" %(i, lst[i], j, lst[j]))

print("

\r\n排序後: %s

" % lst)

輸出結果:

e:\python\algorithm>python3 insertsort.py

排序前: [3, 6, 9, 1, 4, 7, 2, 8, 5, 0]

第1輪 比較[1]:6 [0]:3,不插入

第2輪 比較[2]:9 [0]:3,不插入

比較[2]:9 [1]:6,不插入

第3輪 比較[3]:1 [0]:3,需插入

插入後: [1, 3, 6, 9, 4, 7, 2, 8, 5, 0]

第4輪 比較[4]:4 [0]:1,不插入

比較[4]:4 [1]:3,不插入

比較[4]:4 [2]:6,需插入

插入後: [1, 3, 4, 6, 9, 7, 2, 8, 5, 0]

第5輪 比較[5]:7 [0]:1,不插入

比較[5]:7 [1]:3,不插入

比較[5]:7 [2]:4,不插入

比較[5]:7 [3]:6,不插入

比較[5]:7 [4]:9,需插入

插入後: [1, 3, 4, 6, 7, 9, 2, 8, 5, 0]

第6輪 比較[6]:2 [0]:1,不插入

比較[6]:2 [1]:3,需插入

插入後: [1, 2, 3, 4, 6, 7, 9, 8, 5, 0]

第7輪 比較[7]:8 [0]:1,不插入

比較[7]:8 [1]:2,不插入

比較[7]:8 [2]:3,不插入

比較[7]:8 [3]:4,不插入

比較[7]:8 [4]:6,不插入

比較[7]:8 [5]:7,不插入

比較[7]:8 [6]:9,需插入

插入後: [1, 2, 3, 4, 6, 7, 8, 9, 5, 0]

第8輪 比較[8]:5 [0]:1,不插入

比較[8]:5 [1]:2,不插入

比較[8]:5 [2]:3,不插入

比較[8]:5 [3]:4,不插入

比較[8]:5 [4]:6,需插入

插入後: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

第9輪 比較[9]:0 [0]:1,需插入

插入後: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

排序後: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

*****結束*****

1)插入排序

直接插入排序的理解 來自維基百科 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等...

1 插入排序

本來是想對插入排序做乙個詳細的說明 從演算法原理 演算法優劣 演算法實現一一說起。但是要將演算法原理說的通俗易懂,不是個簡單的事情,常常需要很好的文筆和配上詳細的圖。但是最近需要複習準備面試,確實沒什麼時間去寫一系列完整地說明演算法的部落格,所以這次就只是寫下演算法實現 c 的細節和詳細注釋,找到新...

1 插入排序

一種增量式的做法 在處理少量資料元素進行排序的有效演算法。由內外兩層for迴圈構成,內迴圈做比較,外迴圈控制哪個是插入值。排序引數是乙個陣列 a 1 n 包含n個待排序數 a j 先放入key變數中。將陣列邏輯劃分為 手牌區 a 1 j 1 key區域 a j 和 待插入區 a j 1 n 開始時手...