如何找到排序8个元素的最佳方法,并证明没有更好的方法(没有更有效的方法)?

时间:2011-12-29 21:47:38

标签: algorithm sorting

  

可能重复:
  Fastest sort of fixed length 6 int array

任务是找到一种方法,使用 最少数量的比较 (不是操作)对8个随机数进行排序。我希望我必须使用qSort(将数组除以一半,排序然后合并等等......我认为它必须是quicksort)。对于8个元素,比较次数是17,我必须证明没有办法用16(n减1)比较对随机数组进行排序。

由于

任何情况下,也必须是最差的。我在学习的第一年,所以我认为我们不必做一些非凡的事情(我学习数学而不是IT)。我使用的那种类型是mergesort!提前谢谢。

2 个答案:

答案 0 :(得分:3)

对于n = 8,合并/合并插入排序将需要16次比较,这是最小的最差情况下的比较次数。

http://oeis.org/A001768(mergesort的比较次数)

http://oeis.org/A036604(一般比较的最小数量)

另见 Sorting an array with minimal number of comparisons

编辑:不假设“随机数”是范围限制的整数。如果您可以对值的范围做出假设,那么还有其他选择。

答案 1 :(得分:2)

Radix排序根本不需要比较:)