#include<iostream>
#include<string.h>
using namespace std;
#define N 10
int main(){
short arr[N] = {100, 158, 124, 329, 457, 704, 222, 564 , 666, 654};
short arr2[10][N] = {{0}};
short mod = 0;
short modArr[10] = {0};
short arrIndex = 0;
cout<<"first:"<<endl;
for(int i = 0 ; i < N ; i ++){
cout<<arr[i]<<endl;
}
for(int j = 0; j < 3; j++){
for(int i = 0 ; i < N ; i ++){
modArr[i] = 0;
}
for(int m = 0; m < 10; m++){
for(int n = 0; n < N; n++){
arr2[m][n] = 0;
}
}
for(int i = 0; i < N; i ++){
switch(j){
case 2:
mod = arr[i] % 1000;
mod = mod / 100;
break;
case 1:
mod = arr[i] % 100;
mod /= 10;
break;
case 0:
mod = arr[i] % 10;
break;
}
arr2[mod][modArr[mod]++] = arr[i];
}
arrIndex = 0;
for(int m = 0; m < 10; m++){
for(int n = 0; n < N; n++){
if( 0 != arr2[m][n]){
arr[arrIndex++] = arr2[m][n];
}
}
}
}
cout<<"after sort:"<<endl;
for(int i = 0 ; i < N ; i ++){
cout<<arr[i]<<endl;
}
return 0;
}
#include<string.h>
using namespace std;
#define N 10
int main(){
short arr[N] = {100, 158, 124, 329, 457, 704, 222, 564 , 666, 654};
short arr2[10][N] = {{0}};
short mod = 0;
short modArr[10] = {0};
short arrIndex = 0;
cout<<"first:"<<endl;
for(int i = 0 ; i < N ; i ++){
cout<<arr[i]<<endl;
}
for(int j = 0; j < 3; j++){
for(int i = 0 ; i < N ; i ++){
modArr[i] = 0;
}
for(int m = 0; m < 10; m++){
for(int n = 0; n < N; n++){
arr2[m][n] = 0;
}
}
for(int i = 0; i < N; i ++){
switch(j){
case 2:
mod = arr[i] % 1000;
mod = mod / 100;
break;
case 1:
mod = arr[i] % 100;
mod /= 10;
break;
case 0:
mod = arr[i] % 10;
break;
}
arr2[mod][modArr[mod]++] = arr[i];
}
arrIndex = 0;
for(int m = 0; m < 10; m++){
for(int n = 0; n < N; n++){
if( 0 != arr2[m][n]){
arr[arrIndex++] = arr2[m][n];
}
}
}
}
cout<<"after sort:"<<endl;
for(int i = 0 ; i < N ; i ++){
cout<<arr[i]<<endl;
}
return 0;
}