gpt4 book ai didi

python - 递归选择排序以返回python中的降序列表

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

我一直在解决一个问题,通过递归的方法对元素进行降序排序,代码如下。

import operator

def do_stuff(elem_list):

if not elem_list:
return None

max_index , max_element = max(enumerate(elem_list) , key = operator.itemgetter(1))
elem_list[max_index],elem_list[0] = elem_list[0],elem_list[max_index]

return do_stuff(elem_list[1:])

p_list = [4,2,3,5,1]
do_stuff(p_list)
print(p_list)

输出 -

[5, 2, 3, 4, 1]

我似乎无法弄清楚问题出在哪里以及为什么我得不到所需的输出?

最佳答案

我能够通过添加额外参数来解决您的问题,因为您似乎正在使用 insertion sort 的递归实现,您需要某种方法来跟踪列表中交换值的下一个开放位置。

import operator
def sortl(l, last):
# base case
if last + 1 >= len(l):
return l
# find the max index (mi) and max value in the list
mi, _ = max(enumerate(l[last:]), key = operator.itemgetter(1))
mi += last # caculate the offset in the sublist
l[mi], l[last] = l[last], l[mi] # swap the values

# recursive call
return sortl(l, last + 1)

通过每次使用“last + 1”,您可以模拟使用底层子列表,因为调用 do_stuff([some_list[1:]) 不起作用

关于python - 递归选择排序以返回python中的降序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37035014/

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