标签:
1 void countingSort(array<int> &a, int k) //a中皆为整数,范围为0到K-1 2 { 3 array<int> c(k, 0); 4 for (int i = 0; i < a.length; ++i) 5 c[a[i]]++; 6 for (int j = 1; j < k; j++) 7 c[j] = c[j] + c[j-1]; 8 array<int> b(a.length); 9 for (int i = a.length-1; i >= 0; --i) 10 b[--c[a[i]]] = a[i]; 11 a = b; 12 }
1 void radixSort(array<int> &a) 2 { 3 int d = 8, w = 32; 4 for (int p = 0; p < w/d; p++) 5 { 6 array<int> c(1 << d, 0); 7 array<int> b(a.length); 8 for (int i = 0; i < a.length; i++) 9 c[(a[i] >> d*p) & ((1<<d) - 1)]++; 10 for (int j = 1; j < 1<<d; j++) 11 c[j] += c[j-1]; 12 for (int i = a.length - 1; i >= 0; i--) 13 b[--c[ (a[i] >> d*p) & ( (1<<d) - 1 ) ]] = a[i]; 14 a = b; 15 } 16 }
标签:
原文地址:http://www.cnblogs.com/darrensun/p/4508749.html