
[英]Confused about averaging the duration of different sorting algorithms based on input size?
[英]Recognise different sorting algorithms based on input data and runtime?
我得到了一个 class 和我看不到的 5 种方法( sort1
到sort5
)。 通过为每种方法提供一个数组作为输入,我的任务是观察并找出每种方法实现了哪种排序算法(冒泡排序、插入排序、选择排序、合并排序或快速排序)。
我已经计算了 arrays 的持续时间,其中包含 10k、20k、40k、80k 和 100k 个元素,每个元素按升序、降序和随机顺序排列,但我仍然无法弄清楚。
这是我的时间计算
sort1 ascen 10000 array (0.06400000 seconds)
sort1 ascen 20000 array (0.21700000 seconds)
sort1 ascen 40000 array (0.87100000 seconds)
sort1 ascen 80000 array (3.52100000 seconds)
sort1 ascen 100000 array (5.12500000 seconds)
sort1 dscen 10000 array (0.28900000 seconds)
sort1 dscen 20000 array (1.08200000 seconds)
sort1 dscen 40000 array (4.40100000 seconds)
sort1 dscen 80000 array (17.32000000 seconds)
sort1 dscen 100000 array (27.01900000 seconds)
sort1 random 10000 array (0.28100000 seconds)
sort1 random 20000 array (1.09300000 seconds)
sort1 random 40000 array (4.36800000 seconds)
sort1 random 80000 array (17.48700000 seconds)
sort1 random 100000 array (27.43300000 seconds)
sort2 ascen 10000 array (0.00300000 seconds)
sort2 ascen 20000 array (0.00200000 seconds)
sort2 ascen 40000 array (0.00300000 seconds)
sort2 ascen 80000 array (0.00200000 seconds)
sort2 ascen 100000 array (0.00300000 seconds)
sort2 dscen 10000 array (0.25700000 seconds)
sort2 dscen 20000 array (0.95800000 seconds)
sort2 dscen 40000 array (3.49500000 seconds)
sort2 dscen 80000 array (13.96100000 seconds)
sort2 dscen 100000 array (21.88800000 seconds)
sort2 random 10000 array (0.06100000 seconds)
sort2 random 20000 array (0.29000000 seconds)
sort2 random 40000 array (1.38100000 seconds)
sort2 random 80000 array (6.08200000 seconds)
sort2 random 100000 array (9.78800000 seconds)
sort3 ascen 10000 array (0.00500000 seconds)
sort3 ascen 20000 array (0.00100000 seconds)
sort3 ascen 40000 array (0.00900000 seconds)
sort3 ascen 80000 array (0.01900000 seconds)
sort3 ascen 100000 array (0.04800000 seconds)
sort3 dscen 10000 array (0.00700000 seconds)
sort3 dscen 20000 array (0.88100000 seconds)
sort3 dscen 40000 array (0.03000000 seconds)
sort3 dscen 80000 array (0.04100000 seconds)
sort3 dscen 100000 array (0.00600000 seconds)
sort3 random 10000 array (0.00200000 seconds)
sort3 random 20000 array (0.28400000 seconds)
sort3 random 40000 array (0.00700000 seconds)
sort3 ranodm 80000 array (0.01300000 seconds)
sort3 random 100000 array (0.01800000 seconds)
sort4 ascen 10000 array (0.01200000 seconds)
sort4 ascen 20000 array (0.01100000 seconds)
sort4 ascen 40000 array (0.00300000 seconds)
sort4 ascen 80000 array (0.09800000 seconds)
sort4 ascen 100000 array (0.05100000 seconds)
sort4 dscen 10000 array (0.00700000 seconds)
sort4 dscen 20000 array (0.00900000 seconds)
sort4 dscen 40000 array (3.50300000 seconds)
sort4 dscen 80000 array (0.00900000 seconds)
sort4 dscen 100000 array (0.01600000 seconds)
sort4 random 10000 array (0.00200000 seconds)
sort4 random 20000 array (0.00400000 seconds)
sort4 random 40000 array (1.37300000 seconds)
sort4 random 80000 array (0.01800000 seconds)
sort4 random 100000 array (0.02200000 seconds)
sort5 ascen 10000 array (0.00200000 seconds)
sort5 ascen 20000 array (0.00100000 seconds)
sort5 ascen 40000 array (0.00500000 seconds)
sort5 ascen 80000 array (0.00300000 seconds)
sort5 ascen 100000 array (0.00300000 seconds)
sort5 dscen 10000 array (0.25400000 seconds)
sort5 desc 20000 array (0.86900000 seconds)
sort5 desc 40000 array (3.53500000 seconds)
sort5 desc 80000 array (14.00900000 seconds)
sort5 desc 100000 array (21.85400000 seconds)
sort5 random 10000 array (0.28700000 seconds)
sort5 random 20000 array (1.28500000 seconds)
sort5 random 40000 array (5.84900000 seconds)
sort5 random 80000 array (25.92500000 seconds)
sort5 random 100000 array (41.10800000 seconds)
乍一看,我会说你的时间在几种情况下是错误的。 例如,对于 40000 个项目,sort4 ascen 所用的时间是 100000 个项目的 50 倍。您的数据中有几个类似的情况。
无论如何,这里的关键是确定,对于每种排序,随机的运行时间如何随数据大小而变化。 对于您确定的排序算法,它可能是 n^2 或 n*log(n)。 这为您提供了有关算法复杂性的良好提示。 快速排序和归并排序是O(n log n),其他三个是O(n^2)。
然后你考虑这些算法的最佳情况和最坏情况的行为。 例如,选择排序在所有三种情况下(升序、降序和随机)的运行时间都应该非常接近。 冒泡排序和插入排序具有非常好的最佳情况(升序)行为。 合并排序在所有三种情况下都具有相当一致的运行时间。 天真的快速排序具有可怕的升序或降序行为,但通常对于随机列表来说是最快的。
整个想法是测试您对不同排序算法行为的理解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.