Advertisement
joric

radix.cpp

Jan 5th, 2017
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.72 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. #define BO(x) (((x) >> bOfs) & 0xff)
  5. static void radix(int bOfs, int size, int *a, int *dest) {
  6.     int f[256] = {0}; for (int i=0; i<size; i++) f[BO(a[i])]++;
  7.     for (int s=0, i=0; i<256; i++) { int t = f[i]; f[i] = s; s+=t; }
  8.     for (int i=0; i<size; i++) dest[f[BO(a[i])]++] = a[i];
  9. }
  10.  
  11. void radix_sort(int arr[], int size) {
  12.     int * dest = new int[size];
  13.     radix (0, size, arr, dest);
  14.     radix (8, size, dest, arr);
  15.     radix (16, size, arr, dest);
  16.     radix (24, size, dest, arr);
  17.     delete[] dest;
  18. }
  19.  
  20. void main() {
  21.     int arr[] = { 10,3,512,500,480,2,16385,7,3,5,1 };
  22.     int size = sizeof(arr)/sizeof(arr[0]);
  23.     radix_sort(arr, size);
  24.     for (int i=0; i<size; i++) cout<<arr[i]<<","; cout<<endl;
  25. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement