插入排序Python

"""
插入排序:时间复杂度 O(n^2)

从列表的第一项元素开始,将这部分元素看做排好序的子列表
逐步将后续的元素,寻找合适的位置,插入到前面的子列表中去
"""


def insertionSort(alist):
    # 从第二个元素开始遍历,因为要与前一个元素比较
    for index in range(1, len(alist)):
        # 首先 记录 需要排序的 这个元素
        currentValue = alist[index]
        # 初始化开始比较的位置 position
        position = index
        # 将要排序的元素 与 position 前面的元素相比较,如果要排序的元素比较小
        while position > 0 and alist[position - 1] > currentValue:
            # 就把 position 前面的元素往后移
            alist[position] = alist[position - 1]
            # 更新 position 的值,与更前面的元素比较
            position -= 1
        # 如果 position = 0,代表比较到头了,前面没有元素,这个元素是最小的 alist[0] = currentValue
        # 如果 alist[position - 1] < currentValue,代表前面的元素比要排序的元素小,把要排序的值放在当前位置即可
        alist[position] = currentValue


a = [123, 36, 1, 96, 23, 65, 12, 7, 3, 63, 6]

insertionSort(a)
print(a)

你可能感兴趣的:(插入排序Python)