一、问题描述
输入: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核心编程》第二版