插入排序:插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 [1] 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动

时间复杂度 O(n²)

空间复杂度 O(1)

import random

"""
1. 从第一个元素开始,该元素可以认为已经被排序;
2. 取出下一个元素,在已经排序的元素序列中从后向前扫描;
3. 如果该元素(已排序)大于新元素,将该元素移到下一位置;
4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
5. 将新元素插入到该位置后;
6. 重复步骤2~5。
"""


def insert_sort(li):
    """
    插入排序 时间复杂度 O(n²)  空间复杂度O(1)
    :param li:
    :return:
    """
    # 循环开始
    for i in range(1, len(li)):
        # 获取第二个值
        tmp = li[i]
        # 第一个索引下标
        j = i - 1
        # 当满足循环条件,j 没有超出索引边界,然后开始比较第一个值(前一个值)和下一个值,以此类推
        while j >= 0 and li[j] > tmp:
            # 交换位置
            li[j + 1] = li[j]
            # 索引-1继续比较
            j = j - 1
        # 交换位置,小的往前
        li[j + 1] = tmp


li = [random.randint(0, 100) for i in range(10)]
print(li)
insert_sort(li)
print(li)

插入排序

results matching ""

    No results matching ""