#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<iostream>
#include<string>
using namespace std;
const int num=20;
const int len=6;
const int R=36;
const string charset="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string str[num];
void LSD();
void key_index_counting(int);
void LSD(){
for(int d=len-1;d>=0;d--){
key_index_counting(d);
}
}
void key_index_counting(int d){
int count[R+1]={0};
string aux[num];
for(int i=0;i<num;i++){
count[charset.find(str[i][d])+1]++;
}
for(int r=0;r<R;r++){
count[r+1]+=count[r];
}
for(int i=0;i<num;i++){
aux[count[charset.find(str[i][d])]++]=str[i];
}
for(int i=0;i<num;i++){
str[i]=aux[i];
}
}
int main(){
srand((long long)time(NULL));
printf("生成随机数据:\n");
for(int i=0;i<num;i++){
for(int j=0;j<len;j++){
str[i]+=charset[rand()%R];
}
}
for(int i=0;i<num;i++){
cout<<str[i]<<endl;
}
printf("\n排序后的数据:\n");
LSD();
for(int i=0;i<num;i++){
cout<<str[i]<<endl;
}
printf("\n");
return 0;
}
生成随机数据:
JVMALI
MZFKNA
Z1DUU7
FH92WF
1G77RT
H00P9Z
I5XEWA
FSB4UE
ACYEAK
9LTR8Z
0N11JI
2UI16F
D7FFZL
W3VSJT
URTZ9N
12ESN4
4E270P
ZN98B2
0OJ11R
A1PAX4
排序后的数据:
0N11JI
0OJ11R
12ESN4
1G77RT
2UI16F
4E270P
9LTR8Z
A1PAX4
ACYEAK
D7FFZL
FH92WF
FSB4UE
H00P9Z
I5XEWA
JVMALI
MZFKNA
URTZ9N
W3VSJT
Z1DUU7
ZN98B2