Pagini recente » Cod sursa (job #872702) | Cod sursa (job #2256230) | Cod sursa (job #288013) | Cod sursa (job #2566333) | Cod sursa (job #1105273)
#include <fstream>
using namespace std;
int v[100], n;
void radixSort() {
int bucket[10][20], buck_count[10], b[10];
int r,no_of_passes=0,divisor=1,largest;
largest=v[0];
for(int i=1;i<n;i++)
{ if(v[i] > largest)
largest=v[i]; }
while(largest > 0)
{ no_of_passes++;
largest /= 10; }
for(int pass_no=0; pass_no < no_of_passes; pass_no++) {
for(int k=0; k<10; k++)
buck_count[k]=0;
for(int i=0;i<n;i++){
r=(v[i]/divisor) % 10;
bucket[r][buck_count[r]++]=v[i]; }
int i=0;
for(int k=0; k<10; k++){
for(int j=0; j<buck_count[k]; j++)
v[i++] = bucket[k][j]; }
divisor*=10;
}
}
int main()
{ ifstream in("radixsort.in");
ofstream out("radixsort.out");
in>>n;
for(int i=0; i<n; i++)
in>>v[i];
radixSort();
for(int i=0; i<n; i++)
out<<v[i]<<" ";
in.close();
out.close();
return 0;
}