8.1-4 n/k個k大小的有序子序列排序排序
每一個k大小的序列有k!種排列可能,因此n/k個子序列有(k!)^(n/k)個子序列,也即決策樹至少要有這麼多個葉子。設樹高爲h,則有遞歸
2^h >= (k!)^(n/k),得h >= lg((k!)^(n/k)) = (n/k)lg(k!) >= (n/k)lg((k/2)^(k/2)) = (n/2)lgk循環
8-3 排序不一樣長度的數據項數據
a) 先用計數排序按「數字位數」進行排序,而後再用基數排序對位數相同的每一個桶內的數字排序。數字
b) 根據第一個字母排序(計數排序),而後對第一個字母相同的每組遞歸用按首字母排序計數排序。
8-5 平均排序
d) 創建k個筐,而後依次循環放入元素:a[1]->1筐,a[2]->2筐,……,a[k]->k筐;而後循環,a[k+1]->1筐,a[k+2]->2筐
這樣,最後將n個元素放完後,就有k個徹底不重疊的筐,依次爲:
1筐:{a[1],a[1+k],a[1+2k],a[1+3k]};
2筐:{a[2],a[2+k],a[2+2k],a[2+3k]};
……
每一個筐最多有n/k個元素,排序用(n/k)lg(n/k),總共用O(nlg(n/k))
e)如d中同樣分筐,則每一個筐內的元素已是排好序的,而後對這k個筐進行k路歸併(維護一個k元素的最小堆)