Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- #define BO(x) (((x) >> bOfs) & 0xff)
- static void radix(int bOfs, int size, int *a, int *dest) {
- int f[256] = {0}; for (int i=0; i<size; i++) f[BO(a[i])]++;
- for (int s=0, i=0; i<256; i++) { int t = f[i]; f[i] = s; s+=t; }
- for (int i=0; i<size; i++) dest[f[BO(a[i])]++] = a[i];
- }
- void radix_sort(int arr[], int size) {
- int * dest = new int[size];
- radix (0, size, arr, dest);
- radix (8, size, dest, arr);
- radix (16, size, arr, dest);
- radix (24, size, dest, arr);
- delete[] dest;
- }
- void main() {
- int arr[] = { 10,3,512,500,480,2,16385,7,3,5,1 };
- int size = sizeof(arr)/sizeof(arr[0]);
- radix_sort(arr, size);
- for (int i=0; i<size; i++) cout<<arr[i]<<","; cout<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement