Pagini recente » Cod sursa (job #2915409) | Cod sursa (job #1687243) | Cod sursa (job #699483) | Cod sursa (job #996369) | Cod sursa (job #1022677)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream f("algsort.in");
ofstream g ("algsort.out");
int v[500001],n;
void insertie (vector<int> &v, int poz, int val)
{
int i=poz-1;
while (i>=0 && v[i]>val)
{
v[i+1]=v[i];
i--;
}
v[i+1]=val;
}
void insertionsort (vector<int> &v,int n)
{
for (int i=1;i<n;i++)
insertie(v,i,v[i]);
}
int hashf (int x)
{
return x >> 16;
}
void bucketsort (int v[])
{
vector<int> buckets [n/3];
for (int i=0;i<n;i++)
buckets[hashf(v[i])].push_back(v[i]);
for (int i=0;i<n/3;++i)
insertionsort(buckets[i],(int)buckets[i].size());
for (int i=0;i<n/3;++i)
{
for (vector<int>::iterator j=buckets[i].begin();j!=buckets[i].end();++j)
g<<*j<<" ";
}
}
int main()
{
f>>n;
for (int i=0;i<n;i++)
f>>v[i];
bucketsort(v);
return 0;
}