快速和肮脏的解决方案。 如果您快速排序是这样的:
def qsort(lst):
if len(lst) == 0:
return []
else:
pivot = lst[0]
lesser = qsort([x for x in lst[1:] if x < pivot])
greater = qsort([x for x in lst[1:] if x >= pivot])
return lesser + [pivot] + greater
你可以使用索引变量所要求的尺寸进行排序:
def qsort_index(lst, index):
if len(lst) == 0:
return []
else:
pivot = lst[0]
lesser = qsort_index([x for x in lst[1:] if x[index] < pivot[index]], index)
greater = qsort_index([x for x in lst[1:] if x[index] >= pivot[index]], index)
return lesser + [pivot] + greater
>>> qsort_index(myresults, 0)
[[1, 'A', 2], [2, 'Z', 1], [3, 'J', 0]]
>>> qsort_index(myresults, 1)
[[1, 'A', 2], [3, 'J', 0], [2, 'Z', 1]]
>>> qsort_index(myresults, 2)
[[3, 'J', 0], [2, 'Z', 1], [1, 'A', 2]]
这个实现是远远最佳,但我觉得你有这个想法。
是不是_that_“多维”? –
这与快速排序有什么关系? – Daenyth
哪种快速排序算法?你自己? – NPE