sTo*_*ic5 0 python list-comprehension quicksort duplicates
虽然我不是全新的编程,但我是python的新手.有一些Haskell的经验并且学习python也实现了列表推导,我试图编写一个Haskell-esk快速排序函数.
def quicksort(unsorted):
"""Sorts a list least to greatest numerically using quicksort
"""
if not unsorted:
return []
else:
pivot, *rest = unsorted
lower_sorted = quicksort([a for a in rest if a < pivot])
upper_sorted = quicksort([a for a in rest if a > pivot])
return lower_sorted + [pivot] + upper_sorted
Run Code Online (Sandbox Code Playgroud)
它会对给定的列表进行排序,但这样做会删除任何重复的元素; 显然,这不是排序功能中通常需要的功能.关于为什么会发生这种情况的任何想法,以及我如何解决这个问题(或者我错过的任何其他明显问题)?这是Python 3.6.0.
其中一个条件(if a < lower_pivot或者if a > upper_pivot)必须包括相等性测试.
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |