如何在没有内置工具的情况下从低到高排序列表项

2024-10-01 22:29:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图编写这个函数gensort(list),它接受一个数字列表,并返回一个新的具有相同数字的列表,但是从低到高排序。输出的示例如下

>>> gensort([111, 1, 3.14])
[1, 3.14, 111]

我编写了一个函数来获取一个元素并将其返回到升序顺序中的位置:

^{pr2}$

现在我试着把它应用到我的列表的其余部分,我想到了这个:

def gensort(list):
    insert = insert_sorted(list[min],list)
    return insert 

然而,这一点也不管用。我想知道如何使用insert_递归排序,或者编写一个不同的列表理解来让它返回整个列表的正确顺序。在

我知道有内置的排序工具,但我正试着用我目前所掌握的来写这篇文章。在


Tags: 函数元素示例列表排序顺序def数字
2条回答

您没有问创建自己的排序函数是否是一个好主意,因此我将回答您提出的问题,方法之一是使用insert_nusorted创建完整的gensort函数:

def gensort(list):
    sorted_list = []
    for item in list:
        sorted_list = insert_sorted(item, sorted_list)
    return sorted_list

为什么不使用sort? 如果您只输入数字,请简单地执行以下操作:

insert_sorted(elem,list):
  list.append(elem)
  list.sort() // will sort in asc order

这不是一个工具,它是python中的标准功能。你的方法有一个很大的缺点,它会很慢,而且需要很长的列表内存。最好是向列表中添加新元素并对其运行排序函数。在

当您的函数向n个元素数组添加一个元素时,您将有n+1个函数调用,创建n+1个子数组。这是一种缓慢的方式,而且是不可接受的。如果不想使用python排序,请改用单循环排序算法。在

python中的气泡排序示例:

^{pr2}$

相关问题 更多 >

    热门问题