Cod sursa(job #1018549)

Utilizator bghimisFMI Ghimis Bogdan bghimis Data 29 octombrie 2013 18:46:28
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <ctime>
#include <cstdlib>
#include <vector>
using namespace std;

ifstream cin("algsort.in");
ofstream cout("algsort.out");

int n, v[500000];

void swap( int &a, int &b ) {
    int aux = a;
    a = b;
    b = aux;
}
  
void qsort( int left, int right ) {
    if ( left >= right )
        return;
  
    int piv = v[left + rand() % ( right - left + 1 )], begin = left, end = right;
  
    while ( begin <= end ) {
        while ( v[begin] < piv )
            ++begin;
        while ( v[end] > piv )
            --end;
  
        if ( begin <= end ) {
            swap( v[begin], v[end] );
            ++begin;
            --end;
        }
    }
  
    qsort( left, end );
    qsort( begin, right );
}
  

int main()
{    
  srand(time(NULL));

  cin >> n;

  for(int i = 0; i < n; i++)
    cin >> v[i];

  qsort(0, n - 1);

  for(int i = 0; i < n; i++)
    cout << v[i] << " ";
    
  cin.close();
  cout.close();

  return 0;
}