Cod sursa(job #2006116)

Utilizator thinkphpAdrian Statescu thinkphp Data 28 iulie 2017 19:29:24
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <vector>
#define FIN "algsort.in"
#define FOUT "algsort.out"

using namespace std;

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

     AccessIterator it, 

                    end = last;
     
     bool finished = false, 

          swapped = false;

     while(!finished) {

           swapped = false;

           for(it = first; it != end; ++it) {

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

                    swap(*it, *(it+1));
  
                    swapped = true;
               }
           } 

           if( swapped ) end--;

                   else  

                         finished = true;
     }
     
};

int main() {

    ifstream fin(FIN);

    ofstream fout(FOUT);

    typedef vector<int>::iterator I;

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

    ptrFunc fn = bubblesort<I>;  

    vector<int> vec;

    int n, elem;

    fin>>n;

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

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

    for(auto &v : vec) fout<<v<<" "; 

    return(0);
};