【发布时间】:2014-02-26 17:20:01
【问题描述】:
我在学校得到了一个排序算法作业,我们的任务是复习几种排序算法。该报告的一个部分是关于“什么时候简单排序更快”。
我的排序算法是:
- 冒泡排序
- 选择排序
- 插入
都是 O(n^2) 平均
然后我有以下 O(n log n) 算法:
- 归并排序
- 快速排序
和基数排序 O(kn)
我已经对未排序和排序的数据进行了多次测试,范围从 10 到 100,000 的 n 个条目,并且总是在更快的时间内执行复杂的排序 O(n log n)。
我还尝试使用包含 n 个元素的排序数据集,其中 n = 10 到 n = 100,000
但 O(n log n) 算法仍然更快。
所以我的问题是,什么时候简单的排序比复杂的排序更快。
谢谢, 克里斯。
【问题讨论】:
-
记住 C。对于 small N,小的 C 可以加快挂钟时间。这就是为什么类似快速排序的实现可能对叶子使用冒泡排序的原因。 (如果 n=10 上的冒泡排序不是更快,或者至少相当,我几乎会怀疑这些实现——当我为学校 n=20 做一个类似的研究项目时,它是关于冒泡/快速排序的截止点,但它也可能是编译器/CPU 的差异。)
-
基数排序不是 O(n log n)。 en.wikipedia.org/wiki/Radix_sort
-
使用真正的小输入。 n 从 2 开始。
-
你是如何安排这些时间的?
-
@TimothyShields ye 我的错误是 O(nk) 抱歉