我正在使用快速排序来对我的列表进行排序。该列表充满了格式如下的数字:
1999.03,0.9
2000.08,0.1
1988.1,0.8小数点前的数字是年份,小数点后的数字是月份。逗号后面的数字是一个价格。我的快速排序将它们按顺序排列,但在我这样做后,它会降低价格,我不知道为什么。我是python的新手,所以我可能没有用最好的方法来做这件事,但我仍然希望有人能告诉我为什么它不能工作。
def quick_sort(arr):
if arr == []:
return []
else:
element = arr[len(arr)/2]
pivot = float(element[0:7])
lesser = quick_sort([x for x in arr[1:] if float(x[0:7]) < pivot])
greater = quick_sort([x for x in arr[1:] if float(x[0:7]) >= pivot])
return lesser + [pivot] + greater输出如下所示:
1988.1
1999.03
2000.08我假设这是快速排序的递归调用中的语法,但是我对python的了解还不够多,无法发现它。
发布于 2014-06-04 03:45:02
您可以切割枢轴以将其与其他切割进行比较。在这里,你放下了那个角色。你必须保留整个元素:
element = arr[len(arr) / 2]
pivot = float(element[:7])因此,您可以与变量pivot进行比较,结果列表是使用element部件构建的。
使用以下命令构建结果:
return lesser + [element] + greaterhttps://stackoverflow.com/questions/24023549
复制相似问题