为什么需要里面的B到D的步骤?
既然是整数,直接根据c[i]里面的值,输出就好了,比如c[0]是2,那么就输出2个0.
c[1]是3,再输出3个1...
B到D是为了保证所谓排序的稳定性?
for i ← 1 to k do
c[i] ← 0
for j ← 1 to n do
c[A[j]] ← c[A[j]] + 1 //A
//c[i] now contains the number of elements equal to i
for i ← 2 to k do
c[i] ← c[i] + c[i-1] // B
// c[i] now contains the number of elements ≤ i
for j ← n downto 1 do
B[c[A[i]]] ← A[j] // C
c[A[i]] ← c[A[j]] - 1 // D
j*****y 发帖数: 1071
2
这个是可以,可是不 stable
【在 l**h 的大作中提到】 : 为什么需要里面的B到D的步骤? : 既然是整数,直接根据c[i]里面的值,输出就好了,比如c[0]是2,那么就输出2个0. : c[1]是3,再输出3个1... : B到D是为了保证所谓排序的稳定性? : for i ← 1 to k do : c[i] ← 0 : for j ← 1 to n do : c[A[j]] ← c[A[j]] + 1 //A : //c[i] now contains the number of elements equal to i : for i ← 2 to k do