1. 直接插入排序法
直接插入排序法是将数列中的数据,逐一与已排序好的数据进行比较。例如,在排好顺序的两个数据中插入第三个数据,就需要将其与排好的两个数据进行比较,通过比较结果将数据各自放在合适的位置。即在第三个数据插入数列时,这三个数据已然是排好顺序的。接着将第四个数据插入,以此类推,直到排序完成。直接插入排序法最后的结果也有两种形式,即递增数列和递减数列。
2. 使用直接插入排序法进行递增排序
使用直接插入排序法对列表:58,29,86,69,10进行递增排序。具体代码如下:
def insert(data): # 自定义一个插入排序法函数
for i in range(5): # 遍历新数据
temp = data[i] # temp用来暂存数据
j = i - 1
# 循环排序,判断条件是数据的下标值要大于等于0且暂存数据小于原数据
while j >= 0 and temp < data[j]:
data[j + 1] = data[j] # 把所有元素往后移一位
j -= 1 # 下标减1
data[j + 1] = temp # 最小的数据插入最前一个位置
print('第 %d 次排序之后的结果是' % (i + 1), end='') # 提示
for j in range(5): # 遍历每次排序的结果
print('%3d' % data[j], end='') # 输出结果
print() # 输出空行
data = [58, 29, 86, 69, 10] # 创建数列并初始化
print("原始数据为:") # 提示
for i in range(5): # 遍历原有数据
print('%3d' % data[i], end='') # 输出结果
print('\n---------------------------') # 输出分界符
insert(data) # 调用直接插入排序法函数
print('\n---------------------------') # 输出分界符
print("排序之后的数据为:") # 提示
for i in range(5): # 遍历排序好的新数列的数据
print('%3d' % data[i], end='') # 输出结果
print('') # 输出空行