【问题标题】:In place list sort就地列表排序
【发布时间】:2010-11-05 10:59:49
【问题描述】:

我有一个对象列表 (L1) 和另一个整数列表 (L2),它们表示对象应该处于的顺序。出于对这个问题不重要的原因,我被允许的唯一操作在 L1 上执行是

L1.move(int fromIndex, int toIndex)

我想知道是否有人可以向我指出一种算法,该算法可以仅使用这一操作或就地排序将对象按 L2 指定的顺序放入 L1。

谢谢

【问题讨论】:

  • 问题是首先找到可以做到这一点的算法,还是找到一个高效的算法?
  • 列表中元素不超过20个,所以我不是很关心速度。
  • 该项目被插入到 N 之前,如果我在 L1 中有一个对象 a、b、c 的列表并且我调用 L1.move(2, 0) 新列表是 c、a、b

标签: algorithm sorting


【解决方案1】:

看看这些: 冒泡排序、梳状排序、选择排序、插入排序、堆排序、Shell排序。

【讨论】:

  • 耶!梳理排序! (几乎没有人使用它,这是一种耻辱 :-/)此外,列表稍微减少是需要稳定的排序...
【解决方案2】:

here,我已经发布了一个关于使用 O(1) 额外空间重新排列数组的方法的答案。我不确定它是否与您所拥有的 move 的语义完全匹配,但它可能适用。

【讨论】:

    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 2014-02-28
    • 2013-05-11
    • 2022-01-09
    • 2011-09-13
    • 2016-01-09
    • 1970-01-01
    • 2019-09-30
    相关资源
    最近更新 更多