Python實現插入排序
一般來說,插入排序都采用in-place在數組上實現。具體算法描述如下:
1.從第一個元素開始,該元素可以認為已經被排序
2.取出下一個元素,在已經排序的元素序列中從後向前掃描
3.如果該元素(已排序)大於新元素,將該元素移到下一位置
4.重復步驟3,直到找到已排序的元素小於或者等於新元素的位置
5.將新元素插入到該位置後
6.重復步驟2~5
最優時間復雜度O(n)
最差時間復雜度O(n^2)
#! /usr/bin/env python
# -*- coding: utf-8 -*-
def insertion_sort(l):
length = len(l)
for i in range(1, length):
item = l.pop(i)
for j in range(i,0,-1):
if item >= l[j-1]:
l.insert(j, item)
break
else:
l.insert(0, item)
if __name__ == "__main__":
l1 = [3, 1, 2, 4, 9, 8, 6, 7, 5]
print l1
insertion_sort(l1)
print l1
《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm
《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm
Python腳本獲取Linux系統信息 http://www.linuxidc.com/Linux/2013-08/88531.htm
在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm
Python 的詳細介紹:請點這裡
Python 的下載地址:請點這裡