当小数组必须排序*和*复制时,替换插入排序+复制

时间:2013-09-12 12:24:48

标签: sorting insertion-sort selection-sort

考虑两个长度为N的数组A和B,其中N非常小。我想对A中的元素进行排序,并将已排序的元素存储在B中。

在A上进行就地插入排序然后将排序值批量复制到B是相当简单的。但是,这无法利用两件事:

  1. 可以使用大小为N的临时空间和
  2. 排序的值最终需要以B而不是A结束。
  3. 任何人都可以提出不同的方法(可能是修改后的插入排序吗?),这些方法可以利用其中的一个(或两个)并最终胜过插入排序+复制的简单解决方案吗?

1 个答案:

答案 0 :(得分:0)

多年后来,但如果其他人有机会这么做,这就是我的两分钱。 使用插入排序和快速不合适排序(如合并排序)的组合可能会提供一些最小的改进。

  1. 将数组拆分为四分之一,并使用插入排序
  2. 进行排序
  3. 将第一和第二季度合并到临时空间,第3和第4季度相同
  4. 从头开始将上半部分和后半部分合并到目标数组
  5. 同样,这可能提供最小的现实世界改进,并且可能是过早优化的情况。你最好对你的应用程序进行基准测试,看看你是否真的需要在这部分算法中进行改进,或者你的时间是否更好地用于优化其他方面。