迭代式
《算法导论》上归并排序算法复杂度迭代式为:
通式推导
由此可以导出其通式,如下(分了分析方便,假设n是2的倍数):
上面公式可以写成这样,这里的lg表示2为底的对数:
T(n)=2T(n/2)+cn
T(n/2)=2T(n/4)+c(n/2)
…
T(4)=2T(2)+c(n/(2^(lgn-2))
T(2)=2T(1)+c(n/(2^(lgn-1))
每行左右分别乘以1,2,4,8,…….2^(lgn-1),然后左右等式分别相加,并消项,得到:
T(n)=2^(lgn)c+lgn*cn=cnlgn+cn=O(nlgn)
代码实现
1 | function dcSort(arr) { |