Cod sursa(job #1850716)

Utilizator NarniussAnghelache Bogdan Narniuss Data 18 ianuarie 2017 20:55:08
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;



int n, a[500001];


void quicksort(int l, int r)
{
  int  i, j, m;
  if (l >= r) {
        return;
    }

  m = a[l +(r-l)/2];
  i = l;
  j = r;

  while( l < j || i < r ){
    while(a[i] < m) i++;
    while(a[j] > m) j--;

    if(i <= j){
        swap(a[i], a[j]);
        i++;
        j--;
    }
    else{
      if(l < j) quicksort(l, j);
      if(i < r) quicksort(i, r);

      return;
    }
  }

}
int main()
{
  ifstream fin("algsort.in");
  ofstream fout("algsort.out");
  fin>>n;
  int i;

  for(i = 1 ; i <= n ; i++)
    fin >> a[i];

  quicksort(1, n);

  for(i = 1 ; i <= n ; i++)
    fout << a[i] << " ";

  fin.close();
  fout.close();
  return 0;
}