Cod sursa(job #978534)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 28 iulie 2013 23:56:05
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

void CocktailSort( vector<int>& a )
{
    const int N = a.size();
    bool notSorted = true;

    while( notSorted )
    {
        notSorted = false;

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

        if ( !notSorted )   break;

        notSorted = false;

        for ( int i = N - 1; i > 0; i-- )
        {
            if ( a[i - 1] > a[i] )
                    swap( a[i - 1], a[i] ),
                    notSorted = true;
        }
    }
}

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

int main()
{
    vector<int> a;
    read(a);
    CocktailSort(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();
}