将黑盒数组排序算法改为稳定算法

时间:2011-06-30 14:53:42

标签: algorithm data-structures

让Sort1成为给定的算法和给定的数组。 Sort1以f(n)的时间运行。 我需要使用Sort1创建一个新的稳定算法Sort2,它将在f(n)+ O(n)的时间内运行。

我的朋友建议我有一个解决方案:

  • 创建A的克隆数组B.
  • 将B中的每个数字更改为一对(数字,索引),其中数字是数字(元素),索引是它的索引(A中的位置)。
  • B中的每个元素都指向它在A中的对应元素。
  • 在A上运行Sort1。
  • 对于排序A中相同数字的每个序列,在flash上​​运行Sort1,它将按每个元素的索引对flash进行排序。

他的解决方案对吗?你有什么建议吗? 谢谢!

1 个答案:

答案 0 :(得分:5)

制作副本,但随后创建一个新的比较函数,使用原始数据作为主键(可能甚至使用原始比较函数进行比较),如果相等,则根据它进行二次比较数组中的原始位置。