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 開始時手...