0

刚刚学习 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)

有什么好处吗?是否已经有类似的方法?

4

2 回答 2

1

list.sort()如果您想就地对列表进行排序。

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

第二个选项适用于任何可迭代类型,而第一个选项是列表独占的(尽管某些其他类型可能也定义了相同或相似的函数,但您通常不能指望这一点)。

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

于 2013-02-24T22:49:30.273 回答
0

lst.sort() 还不够好吗?它肯定比必须在 O(n^2) 时间内运行的 Python 解决方案快得多。

于 2013-02-24T22:39:15.320 回答