Cod sursa(job #1022677)

Utilizator CatalinaRaduCatalina Elena Radu CatalinaRadu Data 5 noiembrie 2013 20:45:53
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#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;
}