Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 创建合并排序和插入排序之间比较次数的绘图_Algorithm_Sorting - Fatal编程技术网

Algorithm 创建合并排序和插入排序之间比较次数的绘图

Algorithm 创建合并排序和插入排序之间比较次数的绘图,algorithm,sorting,Algorithm,Sorting,我需要在合并排序和插入排序之间创建两个比较图 n=输入或数组中要排序的元素数 nc=每个排序算法执行的比较次数 第一个图显示了使用对数×对数刻度(在x轴对数(n)和y轴对数(nc)上)进行合并排序和插入排序的结果 第二个图显示了使用对数(n)x(nc/n)比例的合并排序结果(仅x轴上的对数比例,y轴显示nc/n的值) 有人能解释一下(对数(n)x对数(nc))和(对数(n)x(nc/n))刻度的含义吗? 我不明白为什么我们应该使用日志来创建图,以及日志(n)、日志(nc)、(nc/n)在图中的含

我需要在合并排序和插入排序之间创建两个比较图

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

第一个图显示了使用对数×对数刻度(在x轴对数(n)和y轴对数(nc)上)进行合并排序和插入排序的结果

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

有人能解释一下(对数(n)x对数(nc))和(对数(n)x(nc/n))刻度的含义吗? 我不明白为什么我们应该使用日志来创建图,以及日志(n)、日志(nc)、(nc/n)在图中的含义

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

首先,这里介绍一下什么是对数刻度

那么,为什么要使用对数来创建图呢?在比较算法时,您通常对它们在各种输入上的性能感兴趣。只测量n=10100100010000的性能,而不是测量n=10,11,12,13,…,999999,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,这些点显示在轴上,且间距均匀:对数(n)差相同的点之间的距离相同。请注意,在这种情况下,对数的底并不重要:如果我们更改底,相同的差异将保持不变

更具体地说,(X=n,Y=nc)日志图如下所示:

  • X轴代表n,包含五个点,分别代表n=1010010001000000,均匀分布

  • Y轴将用于nc,并且包含七个点,用于nc=10100、1000、10000、100000、1000000、1000000,且间隔均匀

  • 测量所选n值的性能,并在绘图上放置几个点(ni,nci)

  • 实际曲线通过点之间的分段线性函数或平滑曲线进行近似