Pagini recente » Cod sursa (job #344724) | Cod sursa (job #1935462) | Cod sursa (job #2580460) | Cod sursa (job #2896354) | Cod sursa (job #2610813)
#include <fstream>
#include <vector>
using namespace std;
void RadixSort(int v[],int nr)
{
int pas=0;
vector <int> bucket[256];
int max1=0,nr_cifre=0;
for(int i=0;i<nr;i++)
{
if(v[i]>max1)
max1=v[i];
}
while(max1!=0)
{
nr_cifre++;
max1 = max1 / 256;
}
for(int k=0;k<nr_cifre;k++)
{
for(int i=0;i<nr;i++)
bucket[(v[i]>>pas) & 255].push_back(v[i]);
nr=0;
for(int i=0;i<256;i++)
{
for(size_t j=0;j<bucket[i].size();j++)
v[nr++]=bucket[i][j];
bucket[i].clear();
}
pas= pas + 8 ;
}
}
int main() {
ifstream f("algsort.in");
ofstream g("algsort.out");
int n;
int array[500001];
f >> n;
for (int i = 0; i < n; ++i)
f >> array[i];
RadixSort(array,n);
for (int i = 0; i < n; ++i)
g << array[i] << " ";
g << "\n";
return 0;
}