教授正在讨论合并排序的时间复杂性,他将整个过程分为三个步骤。
我不明白第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
答案 0 :(得分:1)
教授在T(n)
中的含义是确切的复杂性,即算法需要完成的步骤数,实际上可能因实现而异。更有趣的是asymptotic complexity,此处标记为Θ(n)
,并显示T
与n
一起增长的速度。
mergesort算法的第一步是将数组拆分为两半,并使用相同的算法对每一半进行排序(因此是递归的)。该步骤显然需要2T(n/2)
。然后合并两个半部(因此名称),它需要线性时间Θ(n)
。从该递归定义{{1}},他派生出T(n) = 2T(n/2) + Θ(n)
,这是mergesort算法的复杂性类。