namespace RadixSort { //by Sergey Kopeliovich
enum { maxn = 5010 , BN = 16 , maxC = 1 << BN} ;
int n, a[ maxn] , b[ maxn] , cnt[ maxC + 1 ] ;
void Sort( ) {
n = 5000 ;
for ( int i = 0 ; i < n; ++ i) {
a[ i] = rand ( ) + 5 * rand ( ) ;
}
for ( int t = 0 ; t < 2 ; ++ t) {
#define GET(i) ((a[i] >> (t * BN)) & (maxC - 1))
memset ( cnt, 0 , sizeof ( cnt) ) ;
for ( int i = 0 ; i < n; ++ i) {
++ cnt[ GET( i) + 1 ] ;
}
for ( int i = 0 ; i < maxC - 1 ; ++ i) {
cnt[ i + 1 ] + = cnt[ i] ;
}
for ( int i = 0 ; i < n; ++ i) {
b[ cnt[ GET( i) ] ++ ] = a[ i] ;
}
for ( int i = 0 ; i < n; ++ i) {
a[ i] = b[ i] ;
}
}
}
} ;
bmFtZXNwYWNlIFJhZGl4U29ydCB7IC8vYnkgU2VyZ2V5IEtvcGVsaW92aWNoCgogICAgZW51bSB7bWF4biA9IDUwMTAsIEJOID0gMTYsIG1heEMgPSAxIDw8IEJOfTsKCiAgICBpbnQgbiwgYVttYXhuXSwgYlttYXhuXSwgY250W21heEMgKyAxXTsKCiAgICB2b2lkIFNvcnQoKSB7CgogICAgICAgIG4gPSA1MDAwOwoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgICBhW2ldID0gcmFuZCgpICsgNSAqIHJhbmQoKTsKICAgICAgICB9CgogICAgICAgIGZvciAoaW50IHQgPSAwOyB0IDwgMjsgKyt0KSB7CiAgICAgICAgICAgICNkZWZpbmUgR0VUKGkpICgoYVtpXSA+PiAodCAqIEJOKSkgJiAobWF4QyAtIDEpKQogICAgICAgICAgICBtZW1zZXQoY250LCAwLCBzaXplb2YoY250KSk7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgICAgICAgICArK2NudFtHRVQoaSkgKyAxXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heEMgLSAxOyArK2kpIHsKICAgICAgICAgICAgICAgIGNudFtpICsgMV0gKz0gY250W2ldOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgICAgICAgICBiW2NudFtHRVQoaSldKytdID0gYVtpXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgICAgICAgYVtpXSA9IGJbaV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cgp9Ow==
compilation info
prog.cpp: In function ‘void RadixSort::Sort()’:
prog.cpp:12:20: error: ‘rand’ was not declared in this scope
a[i] = rand() + 5 * rand();
^~~~
prog.cpp:17:13: error: ‘memset’ was not declared in this scope
memset(cnt, 0, sizeof(cnt));
^~~~~~
prog.cpp:17:13: note: ‘memset’ is defined in header ‘<cstring>’; did you forget to ‘#include <cstring>’?
prog.cpp:1:1:
+#include <cstring>
namespace RadixSort { //by Sergey Kopeliovich
prog.cpp:17:13:
memset(cnt, 0, sizeof(cnt));
^~~~~~
stdout