#include <iostream>
#include<algorithm>
using namespace std;
class RadixSort {
public:
int* radixSort(int* A, int n) {
int index[10];
int** c = new int*[10];
for (size_t i = 0; i < 10; i++)
{
c[i] = new int[n];
}
int max = 0;
for (int i = 0; i<n; i++)
if (A[i] > max) max = A[i];
int k = 1;
while (max != 0){
for (int i = 0; i<10; i++){
index[i] = 0;
for (int j = 0; j<n; j++)
c[i][j] = 0;
}//c[10][6]={0}
for (int i = 0; i<n; i++){
int t = A[i] / k % 10;
c[t][index[t]] = A[i];
index[t]++;
}
int r = 0;
for (int i = 0; i<10; i++)
for (int j = 0; j<index[i]; j++)
A[r++] = c[i][j];
max = max / 10;
k = k * 10;
}
return A;
}
};
int main(int argc, char *argv[])
{
int a[]={16,7,3,20,17,8};
int size;
RadixSort* hs = new RadixSort();
int* resu = hs->radixSort(a, 6);
int i;
for (i = 0; i < 6; i++)
cout << resu[i] << " ";
cout << endl;
system("pause");
return 0;
}
基數排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.