gpt4 book ai didi

python - 使用插入排序将列表从最大到最小排序

转载 作者:太空宇宙 更新时间:2023-11-03 17:58:23 27 4
gpt4 key购买 nike

我正在尝试创建一个程序,使用插入排序算法对 10 个数字从大到小的随机列表进行排序。也就是说,找到列表中最大的数字并使用 .append 将其添加到新列表中。如果重复此操作直到列表末尾,则新列表将从最大到最小排序。我已经创建了一个程序,它成功创建了一个随机列表,找到列表中最大的数字,并将其添加到一个新列表中,唯一的问题是我找不到让程序重复 10 次的方法。谢谢!

import random
num_list = []
new_list=[]

for num in range(10):
num_list.append(random.randrange(0,11))

largest=num_list[0]

for repeat in range(len(num_list)):
for large in num_list:
if large>largest:
largest=large
new_list.append(largest)

print new_list

请注意,该程序的重​​点是不使用任何为我排序列表的函数。

最佳答案

您可以通过在每一步中从未排序列表中删除最大值并将其附加到新列表来完成此操作。它不是很有效,但相当简单。

new_list = []

# init random list
num_list = [random.randrange(0, 11) for _ in range(10)]

# while condition will evaluate to False
# only when num_list is empty

while num_list:
# find index of maximum item
max_index = num_list.index(max(num_list))

# remove item with pop() and append to sorted list
new_list.append(num_list.pop(max_index))

编辑:如果您想避免使用内置函数 max(),您可以使用 reduce() 自行编写。

mx = lambda x: reduce(lambda xs, ys: xs if xs > ys else ys, x)

然后只需在找到 max_index 的行将 max 替换为 mx 即可。

关于python - 使用插入排序将列表从最大到最小排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28141846/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com