一、问题描述
输入:n个数的序列(a1, a2,a3….an)
输出:输出序列(a′1, a′2,a′3….a′n),满足a′1< a′2<a′3….<a′n
二、算法描述
这个算法类似于打扑克,假设只有A-K哈,摸一张,放好,在摸一张,跟第一张比对,如果大就放在后面(这个根据个人习惯),如果小就放在前面,以此类推。下图是书中插入算法的图解。
空间复杂度: O(1)
时间复杂度: O(n2)(最坏情况)
三、算法实现
#实现插入排序
def insertion_sort(A):
#A是一个数组
for j in range(1,len(A)):
key = A[j]
i = j - 1
while i >= 0 and A[i] > key:
A[i+1] = A[i]
i = i - 1
A[i + 1] = key
return A
四、运行结果
参考文献
1、《算法导论》第三版
2、《Python核心编程》第二版