2022年 11月 3日

python排序算法-插入排序

直接插入排序核心思想:将需要排序的序列分为两个部分,前面部分是排序好的,后面部分是未排序的,每轮从未排序的部分钟取出一个数,然后通过比较大小把他插入到指定位置,每插入一个数后,排序好的部分则增加一个数,未排序的部分则减少一个数,直到排序完成。

实现代码如下:

'''
插入排序
'''


def insertSort(nums):
    # 从第1个位置开始向后遍历
    for i in range(1, len(nums)):
        # 将第i个数存入临时变量中
        temp = nums[i]
        # 变量j用于记录和临时变量比较的位置,从i的前一个位置开始比较
        j = i - 1
        # 若j未超范围且第j个元素大于临时变量中的值
        while j >= 0 and nums[j] > temp:
            # 将第j个元素向后移动一个位置
            nums[j + 1] = nums[j]
            # j-1,向前比较
            j -= 1
        # 将临时变量存入最后一个未移动的位置的后一个位置
        nums[j + 1] = temp


# 待排序的序列
list = [7, 4, 3, 8, 0, 4, 3, 5, 1, 6]
# 进行插入排序
insertSort(list)
# 输出排序后的序列
print(list)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29