我搜索得太多了,但我找不到很好。
建议一种算法,使所有非稳定排序算法能够作为稳定的排序算法?
答案 0 :(得分:1)
使用额外的内存来存储数组的原始顺序。然后在比较两个相等元素时在算法中使用该顺序。
以下是如何使Python list.sort
稳定的示例:
def make_stable(algorithm):
def stable_version(A):
#adding original order of the array
A2 = [(y, x) for x, y in enumerate(A)]
#running algorithm in modified array
algorithm(A2)
#replacing original array with the result only
A[:] = [y for y, x in A2]
return stable_version
A = [3, 2, 1, 2]
stable_sort = make_stable(list.sort)
stable_sort(A)
print A
答案 1 :(得分:0)
有稳定的排序算法和不稳定的排序算法。 您应该选择一个稳定的算法。 Java中的Arrays.sort必须是稳定的。