【发布时间】:2013-02-24 22:29:27
【问题描述】:
刚刚学习 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)
有什么好处吗?有没有类似的方法?
【问题讨论】:
-
聪明,但我认为这只是插入排序,缺点是它不适用于任意可比较对象(例如字符串、元组等)。所以它不会超过timsort,对不起:)
-
您是在寻找在 Python 中正常排序列表的最佳方法,还是对排序算法的理论感兴趣?
-
他显然对排序算法很感兴趣......每个人都在回答好像他只是问如何对列表进行排序xD无论如何,OnT:
lstDiff列表似乎是多余的,你只是使用当前索引(可以用一个简单的变量代替)。另外,同意 Eevee 的观点,它似乎使用差异而不是条件进行插入排序。 -
为反馈干杯,我正在逐步介绍 Python。只是看看我是否在那里做某事......哈哈。
标签: python list sorting numbers