012.【排序算法】直接插入排序法

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('')                                  		# 输出空行

猜你喜欢

转载自blog.csdn.net/qq_42226855/article/details/131227236