【问题标题】:how do you sort an array of integers but remember their original sort order您如何对整数数组进行排序但记住它们的原始排序顺序
【发布时间】:2016-04-16 07:27:42
【问题描述】:

如何对整数数组进行排序,但保留其原始排序顺序以便稍后撤消我的内存需求非常有限,并且没有空间用于原始、索引、字段或事务范围的任何单独克隆副本?

【问题讨论】:

  • 一种选择是使用数组列表结构,其中数组中的每个节点都指向它曾经所在的前一个存储桶。但是,复制操作可能需要暂时将空间加倍。
  • 除特殊情况外,排序是不可逆的。所以你需要一个持久的置换向量,将排序数组中的索引映射到原始数组中的索引。
  • 只有 8 个整数。 1,2,3,4,5,6,7,8 我只有 9 个桶 8 个用于数据和一个用于气泡交换。

标签: arrays sorting logic


【解决方案1】:

在您指定的约束范围内,并假设您要对小到整数的东西进行排序,您没有太多选择。

  • 如果您知道对于某些 n
  • 您可以在内存中压缩原始数组,可能会使用差分编码和其他一些低内存开销压缩算法的组合,以在内存预算内保留原始副本。
  • 如果这对于您可以腾出的内存来说太多了,我能想到的唯一其他选择是将原始数组的副本溢出到磁盘。

【讨论】:

    【解决方案2】:

    将数据乘以 n 并添加其原始桶向量。其中 n 是最大整数长度的 10 次方。在这种情况下为 1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-15
      • 2019-12-19
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      • 2018-06-14
      • 2010-09-17
      • 1970-01-01
      相关资源
      最近更新 更多