【发布时间】:2013-08-29 08:10:04
【问题描述】:
根据我的计算:
- 快速排序成本 = n + (n/2 + n/2) + (n/4 + n/4 + n/4 + n/4) + ... = n * log(n) = log(n n)
- 堆排序成本 = sum [log(i)] for i = n, n-1, n-2, ..., 1 = log(n!)
为什么说快速排序比堆排序有更好的常数因子,因此快速排序平均优于堆排序?不是log(nn) > log(n!)吗?
【问题讨论】:
-
“成本”有很多含义。你说的是最坏情况下的比较次数吗?
-
为什么是mathematica标签?
-
请参阅Introduction to Algorithms 了解为什么堆排序为 O(n log n)。
-
@delnan:表示时间复杂度
-
因为 heapsort 的代表不好。见azillionmonkeys.com/qed/sort.html
标签: performance algorithm sorting