Loading

11-插入排序

# 插入排序时间复杂度仍然是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)
posted @ 2020-11-13 13:05  lotuslaw  阅读(82)  评论(0编辑  收藏  举报