Python数字排序列表

2024-05-15 20:57:34 发布

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

只是学习了Python,然后开始学习排序列表。显示了两种类型的算法:插入和选择。所以,我有了一个想法,创造了这个:

def DiffSort(lst):
    lstDiff = [None] * len(lst)
    i = 0

    while i < len(lst):
        lstDiff[i] = lst[i] - lst[i-1] if i != 0 else lst[0]

        if lstDiff[i] < 0:
            sbj, tmp = lst[i], lstDiff[i]

            while tmp < 0:
                i -= 1
                tmp += lstDiff[i]
                lst[i+1] = lst[i]

            lst[i] = sbj
        else:
            i += 1

lst = [13,25,18,122,32,1,0.78,25,85,1,32,56,0.55,0.6,17]
print(lst)

DiffSort(lst)

print(lst)

有什么好消息吗?已经有类似的方法了吗?在


Tags: 算法类型列表lenif排序defelse
2条回答

list.sort()如果要对列表进行适当排序。在

sorted(list)如果要返回列表的排序副本。在

第二个选项适用于任何iterable类型,而第一个选项是list exclusive(尽管其他一些类型可能也定义了相同或相似的函数,但您通常不希望如此)。在

由于您似乎关心其中的算法部分,因此您可能会感兴趣: http://svn.python.org/projects/python/trunk/Objects/listsort.txt

不是吗第一排序()够好了吗?它肯定比必须在O(n^2)时间内运行的Python解决方案快得多。在

相关问题 更多 >