我需要在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)在图中的含义。
非常感谢,非常感谢您的帮助。
答案 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>通过点之间的分段线性函数或通过一些平滑曲线来近似实际曲线。