合并排序的runningtime是O(nlgn),插入排序为O(n*n),当合并排序的划分到一定程度时可以应用插入排序。此时插入排序比合并排序的效率高,所以对合并排序做个修改:n/k 长度为k的子序列用插入法排序。(要确定k的值)
a.证明最坏情况下,n/k个子序列用插入来排序的时间时O(nk).
插入排序为O(n*n),那么对长度为k的子序列排序为O(k*k),n/k个子序列排序时间和是(n/k)*O(k*k)=O(n*k),得证
b.证明在最坏情况下各子序列可以在O(nlg(n/k))下合并.
c.设修改后合并算法的时间阶为O(nk+nlg(n/k)).请给出最大渐近值k(以O记号,k是n的函数)使得修改后的算法有和标准合并算法一样的渐近运行时间
d.k的值在实际中如何确定?