在Merge Sort和Insertion Sort之间创建多个比较图

时间:2014-03-09 16:46:21

标签: algorithm sorting

我需要在Merge Sort和Insertion Sort之间创建2个比较图。

n =要排序的数组中的输入或元素数 nc =每种排序算法执行的比较次数。

第一个图显示了使用log×log scale(在x轴log(n),y轴log(nc)上)的Merge sort和Insertion Sort的结果。

第二个图显示使用log(n)x(nc / n)标度的合并排序结果(仅x轴上的对数刻度,y轴显示nc / n的值)

有人可以解释一下(log(n)x log(nc))和(log(n)x(nc / n))比例是什么意思吗? 我不明白为什么我们应该使用日志来创建绘图,以及log(n),log(nc),(nc / n)在图中的含义。

非常感谢,非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

要开始使用,这里有Wikipedia link解释什么是对数刻度。

那么,为什么会使用对数来创建图?在比较算法时,您通常会对它们在各种输入上的表现感兴趣。测量n = 10,100,1000,10000,100000的性能而不是n = 10,11,12,13,...,99999,100000的整个范围是有意义的。这样,你快速掌握行为而不是浪费时间和绘图空间数百个值,如n = 99800,99801,...,99900,这些值通常非常相似。

现在,图中的log(n),log(nc),(nc / n)是什么意思?每个轴关联两个量。第一个是轴上显示的值。第二个用于确定间距。例如,显示具有线性刻度的n的轴将具有若干点,如轴上所示的n = 10,11,12,13,14,15并且均匀间隔:具有相同n的差异的点将具有相同的距离。显示具有对数刻度的n的轴将具有一些点,例如轴上显示的n = 10,100,1000,10000,100000,1000000并且均匀间隔:具有相同log(n)差异的点将具有相同的距离。请注意,在这种情况下,对数的基数无关紧要:如果我们更改基数,则相同的差异保持不变。

更具体地说,(X = n,Y = nc)对数 - 对数图将是这样的:

  • X轴为n,包含5个点,n = 10,100,1000,10000,100000均匀间隔;

  • Y轴为nc,包含7个点,nc = 10,100,1000,10000,100000,1000000,1000000,均匀间隔;

  • 您测量所选n值的性能,并在图上放置几个点(n i ,nc i );

    < / LI>
  • 通过点之间的分段线性函数或通过一些平滑曲线来近似实际曲线。