Pagini recente » Cod sursa (job #2387867) | Cod sursa (job #1298229) | Cod sursa (job #2960573) | Cod sursa (job #2174925) | Cod sursa (job #1021133)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int v[500000];
int n;
void insert (vector<int> &v, int poz, int value)
{
int i = poz - 1;
while (i >= 0 && v[i] > value)
{
v[i + 1] = v[i];
--i;
}
v[i + 1] = value;
}
void insertionSort(vector<int>& v, int n)
{
for (int i = 1; i < n; ++i)
insert (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)
cout << *j << " ";
}
}
int main()
{
cin >> n;
for (int i = 0; i < n; ++i)
{
cin >> v[i];
}
bucketSort(v);
}