Cod sursa(job #1091547)

Utilizator danny794Dan Danaila danny794 Data 25 ianuarie 2014 20:02:56
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <algorithm>

using namespace std;

const int NMAX = 500005;
int N;
int v[NMAX];

ifstream f("algsort.in");
ofstream g("algsort.out");

void read() {
  f >> N;
	for(int i = 0; i < N; i++)
	  f >> v[i];
}

void quicksort(int begin, int end) {
  if( begin >= end )
    return;
  int r = rand() % (end - begin) + begin;
  int aux = v[r];
  v[r] = v[end];
  v[end] = aux;
  int i = begin - 1;
  while(v[i + 1] <= v[end] && i < end)
    i++;
  for(int j = i + 1; j <= end; j++)
    if(v[j] <= v[end]){
      i++;
      int aux = v[i];
      v[i] = v[j];
      v[j] = aux;
  }
  quicksort(begin, i - 1);
  quicksort(i + 1, end);
}


int main() {
  read();
  quicksort(0, N - 1);
  for(int i = 0; i < N; i++)
    g << v[i] << " ";
  f.close();
  g.close();
	return 0;
}