#include <iostream>
using namespace std;
void CountingSort(int from[], int to[], int len, int maxval) {
int *count = new int[maxval + 1];
for (int i = 0; i < (maxval + 1); i++)
count[i] = 0;
for (int j = 0; j < len; j++)
count[from[j]]++;
int curridx = 0;
for (int val = 0; val <= maxval; val++) {
for (int counter = 0; counter < count[val]; counter++)
to[curridx++] = val;
}
delete[] count;
}
int main()
{
int v[10] = {9, 0, 3, 4, 1, 2, 7, 8, 5, 6};
int u[10];
CountingSort(v, u, 10, 9);
for (int i = 0; i < 10; i++)
std::cout << u[i] << ' ';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBDb3VudGluZ1NvcnQoaW50IGZyb21bXSwgaW50IHRvW10sIGludCBsZW4sIGludCBtYXh2YWwpIHsKICAgIGludCAqY291bnQgPSBuZXcgaW50W21heHZhbCArIDFdOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKG1heHZhbCArIDEpOyBpKyspCiAgICAgICAgY291bnRbaV0gPSAwOwogICAgZm9yIChpbnQgaiA9IDA7IGogPCBsZW47IGorKykKICAgICAgICBjb3VudFtmcm9tW2pdXSsrOwoKICAgIGludCBjdXJyaWR4ID0gMDsKICAgIGZvciAoaW50IHZhbCA9IDA7IHZhbCA8PSBtYXh2YWw7IHZhbCsrKSB7CiAgICAJZm9yIChpbnQgY291bnRlciA9IDA7IGNvdW50ZXIgPCBjb3VudFt2YWxdOyBjb3VudGVyKyspCiAgICAJICAgIHRvW2N1cnJpZHgrK10gPSB2YWw7CiAgICB9CiAgICBkZWxldGVbXSBjb3VudDsKfQoKaW50IG1haW4oKQp7CiAgICBpbnQgdlsxMF0gPSB7OSwgMCwgMywgNCwgMSwgMiwgNywgOCwgNSwgNn07CiAgICBpbnQgdVsxMF07CgogICAgQ291bnRpbmdTb3J0KHYsIHUsIDEwLCA5KTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspCiAgICAgICAgc3RkOjpjb3V0IDw8IHVbaV0gPDwgJyAnOwoKICAgIHJldHVybiAwOwp9