Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <limits.h>
- void countSort(int* p, int* res, int l, int k)
- {
- k*=8;
- int mask = 255 << k;
- int* ar = new int[257];
- for(int i = 0;i<257;++i)
- ar[i] = 0;
- ++ar;
- for(int i = 0;i<l;++i)
- ar[(p[i]&mask)>>k]++;
- for(int i = 0;i<255;++i)
- ar[i+1] += ar[i];
- --ar;
- for(int i = 0;i<l;++i)
- {
- res[ar[(p[i]&mask)>>k]] = p[i];
- ++ar[(p[i]&mask)>>k];
- }
- }
- void radixSort(int* p,int l)
- {
- int* t = new int[l];
- countSort(p,t,l,0);
- countSort(t,p,l,1);
- countSort(p,t,l,2);
- countSort(t,p,l,3);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement