我正在使用快速排序来整理我的列表。该列表中包含以下格式的数字:
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
我假设它在quicksort的递归调用中的语法,但是我不太了解python来发现它。
答案 0 :(得分:2)
您剪切枢轴以将其与其他剪切进行比较。它在这里你放弃了部分。你必须保留整个元素:
element = arr[len(arr) / 2]
pivot = float(element[:7])
因此,您可以与变量pivot
进行比较,结果列表是使用element
部分构建的。
结果的构建完成于:
return lesser + [element] + greater