8.3-1
(1) 首先按最低位字母进行排序得到SEA,TEA,MOB,TAB,DOG,RUG,DIG,BIG,BAR,EAR,COW,ROW,NOW,BOX,FOX;
(2) 然后对次低位字母进行稳定排序得到TAG,BAR,EAR,SER,TEA,DIG,BIG,MOB,DOG,COW,ROW,NOW,BOX,FOX,RUG;
(3) 最后对首位字母进行稳定排序得到BAR,BIG,BOX,COW,DIG,DOG,EAR,FOX,MOB,NOW,ROW,SEA,TAB,TEA。
8.3-2
插入排序,归并排序和快速都是稳定排序,只有堆排序不是稳定的。
对于堆排序,可以修改MAX-HEAPIFY算法的第3到第7行如下:
3 if l <= A.heap-size and A[l] >= A[i]
4 largest = l
5 else largest = i
6 if r <= A.heap-size and A[r] >= A[largest]
7 largest = r
当节点
8.3-3
我们可以归纳证明对于基数排序,当他进行完第
(1) 首先,当
(2) 然后我们假设当
所以当最后
8.3-4
将所有的整数作为以n为基的3位的数来调用基数排序,此时
8.3-5
最坏的情况下,对于每一位上的排序都要分成