Cod sursa(job #1745075)

Utilizator thinkphpAdrian Statescu thinkphp Data 21 august 2016 08:49:59
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define FIN "algsort.in"
#define FOUT "algsort.out"

using namespace std;

template <class AccessIterator>
void bubblesort(AccessIterator first, AccessIterator last) {

     AccessIterator i = first, 
                    n = last - 1;

     bool changed;
   
     do {

        changed = 1;

        for(AccessIterator it = i; it < n; ++it) {

            if(*it > *(it + 1) ) {

                swap( *it, *(it + 1) );

                changed = 0;
            }  
        } 

     }while( !changed );
}

typedef vector<int>::iterator I;

typedef void (*fnPtr)(I, I);

int main() {

    int n, 

        elem;

    ifstream fin( FIN );
    ofstream fout( FOUT );

    fnPtr fn = bubblesort<I>;

    fin>>n;

    vector<int> vec; 

    for(int i = 0; i < n; ++i) fin>>elem, vec.push_back( elem );

    fn( vec.begin(), vec.end() );

    for(int i = 0; i < n; ++i) fout<<vec[ i ]<<" ";

    return(0);
}