如何解释为什么合并排序算法的最佳运行时间为Big Omega(n log n)且平均运行时间为Big theta(n log n)?
答案 0 :(得分:0)
Big Omega忽略低阶项和/或常数因子,通常Big Omega用于描述上限或最坏情况。 Big Theta应该是一个下限和上限和/或最佳情况,平均情况,最坏情况,特定情况。
对于纯合并排序(不是在较小的组上使用某种类型的排序的混合),移动的数量是相同的,n⌈log2(n)⌉(其中⌈⌉是整数上限),而数字比较可以变化,最坏情况略小于n⌈log2(n)⌉,最好的情况约为1/2,所以只有常数因子的差异。如果数据集元素适合寄存器(如排序整数数组),则比较时间可能会被内存访问时间隐藏(比较对总体时间影响很小或没有影响)。如果进行外部合并排序(例如排序大文件),则设备读/写时间可能会隐藏比较时间。
维基文章:
http://en.wikipedia.org/wiki/Big_O_notation
http://en.wikipedia.org/wiki/Time_complexity
http://en.wikipedia.org/wiki/Computational_complexity_theory