算法導(dǎo)論第八章思考題8-2.e答案哩治,最后還是百度了答案,并不會(huì),記錄一下脓杉。
計(jì)數(shù)排序(穩(wěn)定)
for i = 0 to k
c[i] = 0
for j = 1 to A.length
c[a[j]]++;
for i = 1 to k
c[i]+=c[i-1];
for j = A.length down to 1
b[c[a[j]]] = a[j]
c[a[j]]--
計(jì)數(shù)排序原址排序(不穩(wěn)定)
for i = 0 to k
c[i] = 0
for j = 1 to A.length
c[a[j]]++;
//將A初始化為0向量。
//之后無(wú)需插入0元素
for j = 1 to A.length
A[j]=0;
//根據(jù)C中計(jì)數(shù)從后向前插入數(shù)據(jù)
//如果C[l]==C[l-1]简逮,說(shuō)明l已經(jīng)插入完畢或A中本來(lái)就沒(méi)有l(wèi)元素
for (int l=k;l>=1;l--)
while (C[l]!=C[l-1])
//這里C[l]--減去1是因?yàn)閿?shù)組下標(biāo)從0開(kāi)始
A[(C[l]--)-1]=l;