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

标签 algorithm data-structures

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

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

  • 创建 A 的克隆阵列 B。
  • 将 B 中的每个数字更改为一对 (number,index),其中 number 是数字(元素),index 是它的索引(A 中的位置)。
  • B中的每个元素都指向它在A中的对应元素。
  • 在 A 上运行 Sort1。
  • 对于已排序的 A 中的每个相同数字序列,在闪存上运行 Sort1,这将根据每个元素的索引对闪存进行排序。

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

最佳答案

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

关于algorithm - 将黑盒数组排序算法更改为稳定算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6536710/

相关文章:

java - 什么是同时存储 Integer 和 array[String] 值的良好数据结构?

c - 如何在 Gtree (glib) 上搜索元素?

algorithm - 有没有办法在不找到集合中的最大整数的情况下将集合中的整数之和约束为(0,1)?

c++ - Stack 的链表实现

python - 从给定的数字中找到一个总和为给定值的序列?

algorithm - 优化图形邻接的矢量化代码

algorithm - 随机放置没有重叠的矩形

algorithm - 给定一个对象 A 和一个对象列表 L,如何在不测试所有情况的情况下找出 L 上的哪些对象是 A 的克隆?

python - 删除重复内容后尝试合并文件

java - 用Java实现简单链表