【发布时间】:2014-11-25 08:14:38
【问题描述】:
(Python 2.7.8 Windows)
我正在对不同的排序算法(快速、冒泡和插入)进行比较,并且大多数情况下都按预期进行,对于长列表,快速排序要快得多,对于非常短的列表和已经排序的列表,冒泡和插入更快.
引发问题的是快速排序和前面提到的“已排序”列表。我可以对甚至 100000 个项目的列表进行排序而不会出现问题,但是对于从 0...n 开始的整数列表,限制似乎要低得多。 0...500 有效,但即使 0...1000 也有效:
RuntimeError: maximum recursion depth exceeded in cmp
快速排序:
def quickSort(myList):
if myList == []:
return []
else:
pivot = myList[0]
lesser = quickSort([x for x in myList[1:] if x < pivot])
greater = quickSort([x for x in myList[1:] if x >= pivot])
myList = lesser + [pivot] + greater
return myList
代码有问题,还是我遗漏了什么?
【问题讨论】: