【问题标题】:What's the difference between Theta(n) and T(n) when considering time complexity?考虑时间复杂度时,Theta(n) 和 T(n) 有什么区别?
【发布时间】:2015-09-05 09:15:17
【问题描述】:
教授在讨论归并排序的时间复杂度,他把整个过程分为三个步骤。
- 检查数组的大小是否为1 -> 时间复杂度:theta(1)
- 他描述了排序过程->时间复杂度:2T(n/2)
- 合并两个排序序列 -> 时间复杂度:theta(n)
我不明白第 2 步,他为什么将其描述为 2T(n/2) 而不是 2Theta(n/2)? theta(n) 和 T(n) 有什么区别?
这是来自 Youtube 的链接:https://www.youtube.com/watch?v=JPyuH4qXLZ0
它在 1:08:45 - 1:10:33 之间
【问题讨论】:
标签:
algorithm
time-complexity
mergesort
【解决方案1】:
T(n) 教授的意思是确切的复杂性,即算法需要完成的步骤数,实际上可能因实现而异。更有趣的是asymptotic complexity,这里表示为Θ(n),它显示了T 与n 一起增长的速度。
mergesort 算法的第一步是将数组分成两半,并使用相同的算法(因此是递归的)对每一半进行排序。这一步显然需要2T(n/2)。然后合并两半(因此得名),这需要线性时间,Θ(n)。从递归定义T(n) = 2T(n/2) + Θ(n) 他推导出T(n) = Θ(nlogn) 这是归并排序算法的复杂性类。