直接插入排序核心思想:将需要排序的序列分为两个部分,前面部分是排序好的,后面部分是未排序的,每轮从未排序的部分钟取出一个数,然后通过比较大小把他插入到指定位置,每插入一个数后,排序好的部分则增加一个数,未排序的部分则减少一个数,直到排序完成。
实现代码如下:
'''
插入排序
'''
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