Cod sursa(job #1091540)

Utilizator danny794Dan Danaila danny794 Data 25 ianuarie 2014 19:52:49
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <cstdio>
#include <algorithm>

using namespace std;

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

void read() {
	freopen( "algsort.in", "r", stdin );
	freopen( "algsort.out", "w", stdout );
	scanf("%i", &N);
	for(int i = 0; i < N; i++)
	  scanf("%i", &v[i]);
}

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


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