任务是找到一种方法,使用 最少数量的比较 (不是操作)对8个随机数进行排序。我希望我必须使用qSort(将数组除以一半,排序然后合并等等......我认为它必须是quicksort)。对于8个元素,比较次数是17,我必须证明没有办法用16(n减1)比较对随机数组进行排序。
由于
任何情况下,也必须是最差的。我在学习的第一年,所以我认为我们不必做一些非凡的事情(我学习数学而不是IT)。我使用的那种类型是mergesort!提前谢谢。
答案 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排序根本不需要比较:)