Cod sursa(job #978549)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 29 iulie 2013 00:20:16
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

void CombSort( vector<int>& a )
{
    const float shrink = 1.3333333f;
    const int N = a.size();
    int gap = N;
    bool swapped = false;

    while( ( gap > 1 ) || swapped )
    {
        if ( gap > 1 )
                gap = (float)( gap / shrink );

        swapped = false;

        for ( int i = 0; gap + i < N; ++i )
                if ( a[i] - a[i + gap] > 0 )
                {
                    swap( a[i], a[i + gap] );
                    swapped = true;
                }
    }
}

void read(  vector<int>& a );
void write( vector<int> a  );

int main()
{
    vector<int> a;
    read(a);
    CombSort(a);
    write(a);

    return 0;
}

void read( vector<int>& a )
{
    ifstream f("algsort.in");

    int n;

    f >> n;

    for ( int i = 1, x; i <= n; i++ )
    {
        f >> x;
        a.push_back( x );
    }

    f.close();
}

void write( vector<int> a )
{
    ofstream g("algsort.out");

    for ( int i = 0; i < a.size(); i++ )
            g << a[i] << " ";

    g << "\n";

    g.close();
}