# 插入排序时间复杂度仍然是O(n**2),但算法思路与冒泡排序、选择排序不同
# 插入排序维持一个已排好序的子列表,其位置始终在列表的前部,然后逐步扩大这个子列表直到全表
# 插入排序的比对主要用来寻找新项的插入位置
def insertionSort(alist):
for index in range(1, len(alist)): # 从1开始,因为与前面的项比较
# 抽出当前数据,寻找插入位置
currentvalue = alist[index] # 记录值
position = index # 记录索引
while position > 0 and alist[position-1] > currentvalue: # 判断前一项是不比当前项大
alist[position] = alist[position-1]
position = position - 1
alist[position] = currentvalue # 找到插入位置,插入该项
testlist = [2, 3, 3, 243, 24, 24455, 23]
insertionSort(testlist)
print(testlist)