【发布时间】:2014-08-26 11:48:11
【问题描述】:
据我从我的大学了解到,已证明对随机数据进行排序的基于比较的算法的下限是 Ω(nlogn)。我也知道 Heapsort 和 Quicksort 的平均情况是 O(nlgn)。
因此,我尝试绘制这些算法对一组随机数据进行排序所需的时间。
我使用了在 Roseta Code 上发布的算法:quicksort 和 heapsort。当我尝试绘制每个人对多达 100 万个数字进行随机数据排序所需的时间时,我得到了以下看起来是线性的图表:
您还可以找到我从here 运行堆排序得到的结果。 另外你还可以找到我从here运行快速排序得到的结果
但是,在运行冒泡排序时,我确实得到了 O(n^2) 时间复杂度,如下图所示:
这是为什么?我可能在这里遗漏了什么?
【问题讨论】:
-
缩放.....N的大小太小了?
-
@MitchWheat。非常感谢您的评论。但是,N 高达 100 万……我必须使用更大的 N 吗?
-
在你的比较函数中休眠,看看会发生什么?
-
nlogn 图可以看起来是线性的。看science.slc.edu/~jmarshall/courses/2002/spring/cs50/BigO/…的黄线
标签: algorithm sorting complexity-theory time-complexity