0x01 原理
将序列分为两个部分,有序数列和无序数列,每次将一个待排序的数据元素,插入到前面己经排好序的数列中的适当位置,使数列依然有序,反复如此,直到完成排序。
0x02 时间复杂度
时间复杂度为 O( n 2 n^2 n2) ,且插入排序是一个稳定排序。
稳定排序:假设数列中存在两个相同的数(如:两个 1 ),经过排序后,这两个 1 的顺序不变,这种排序叫做稳定排序。
0x03 例子
题目:9,6,2,7,3,1
排序过程:
- 6,9,2,7,3,1
- 2,6,9,7,3,1
- 2,6,7,9,3,1
- 2,3,6,7,9,1
- 1,2,3,6,7,9
0x04 代码实现
import string
#迭代方式
def str_insert_sort(a):
for i in range(1,len(a)): # 将第一个元素作为有序序列,从第二元素开始比较
for j in range(i): # 与有序序列比较
if (a[i]<a[j]):
a.insert(j,a[i])#插入
a.pop(i+1) #删去插入元素
a = [9,6,3,1,8,9,22,75,36,95,12,45,20]
print(a)
str_insert_sort(a)
print(a)