a. 就是普通的排序
b. 2 1 3 5 4 7 6 9 8 10
c. 这个证明简单的吧。
A[i]<=A[i+k]可以得到
A[i]+A[i+1]+......A[i+k-1]<=A[i+1]+A[i+2]+......A[i+k]
充分性得证。
A[i]+A[i+1]+......A[i+k-1]<=A[i+1]+A[i+2]+......A[i+k]
两边各减去A[i+1]+A[i+2]+......A[i+k-1]
就得到A[i]<=A[i+k]
必要性得证。
所以是充要条件
d. 可以将数组分为k组,每组n/k个元素
第一组为A[1],A[1+k],A[1+2k],......
第二组为A[2],A[2+k],A[2+2k]......
......
对每组进行堆排序或者归并排序。
这样每组的时间为n/k*lg(n/k),一共k组,所以总共的时间为nlg(n/k)
e. 提示已经很明显了,和d一样,可以将数组分为k组,每组n/k个元素
然后用6.5-9的算法进行k路合并
f. 懒得证明了。。。
转载请注明原文地址: https://ju.6miu.com/read-675686.html