我如何编写此算法才能使其稳定运行

How can i write this algorithm so that it works stable

假设我们有一个Mystery-Sort(A),它接受一个数组A 长度n作为输入,对A中的数字进行非降序排序,returns排序后的数组

不知道Mystery-Sort实现的算法是否稳定。 我需要一个以非递减顺序获取 n 个整数数组和 returns 排序数组的过程,但我需要该过程稳定。

我如何实现稳定排序程序 Stable-Sort(A) 的伪代码,它预处理 and/or 后处理 在 O(n) 时间内 A 中的元素,只调用一次神秘排序,并且 returns 按非递减顺序排序的数组。

我认为这分为两个阶段:pre-processing 阶段,您可以在其中找到所有重复的元素及其标识符; post-processing 阶段,您只需将找到的元素按其原始顺序覆盖即可。

您没有指定如何区分排序为相同值的元素;我将其称为 id。在第一遍中,构造一个 table 每个值一行。遍历数组;将每个元素(或整个元素)的 ID 存储在 table 中匹配的 table 行中。如果那里已经有一个元素,则扩展该行并存储当前元素。

此时,如果您愿意,可以删除 table 中少于 2 个元素的任何行。

对于post-procesing,遍历排序后的数组。如果您找到的值在 table 中,则不要相信从 Mystery-Sort 返回的顺序。相反,只需用 table 的那一行中的元素覆盖下一个元素。这将恢复它们的原始顺序。

当您到达排序列表的末尾时,您就完成了。