排序算法

Posted by Yannis on May 23, 2018

插入排序算法

伪代码:

INSERTION-SORT(A)
for j=2 to A.length
	key=A[j]
	//insert A[j] into the sorted sequence A[1...j-1]
	i=j-1
	while i>0 and A[i]>key
		A[i+1]=A[i]
		i=i-1
	A[i+1]=key

python代码实现

import sys

def insert_sort(alist):
	#从第二个位置开始进行向前插入
	for i in range(1,len(alist)):
		#从第i个元素向前比较,如果小于前一个元素,交换位置
			for j in range(i,0,-1):
				if alist[j] < alist[j-1]:
					alist[j],alist[j-1]=alist[j-1],alist[j]
	return alist

def main():
	alist=[]
	for i in range(1,len(sys.argv)):
		alist.append(int(sys.argv[i]))
	print(insert_sort(alist))
	
if __name__=="__main__":
	main()

运行代码

# py3 insert_sort.py 1 2 3 4 5 7 6

结果

[1, 2, 3, 4, 5, 6, 7]