Cod sursa(job #1866253)

Utilizator xtreme77Patrick Sava xtreme77 Data 2 februarie 2017 19:50:44
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <bits/stdc++.h>

using namespace std ;

const int MAX = 5e5 + 14 ;

int v[MAX] ; 

ifstream fin ("algsort.in") ;
ofstream fout ("algsort.out") ;

void Q ( int st , int dr )
{
	int i = st ; 
	int j = dr ; 
	int piv = v [ st + (rand()%(dr-st+1)) ] ;
	do{

		while ( i <= dr and v [i] < piv ) ++ i ; 
		while ( j >= st and v [j] > piv ) -- j ;

		if ( i <= j ) {
			swap ( v[i++], v[j--] ) ;
		} 

	}while ( i <= j ) ;
	if ( j > st ) Q ( st, j ) ;
	if ( i < dr ) Q ( i, dr ) ;
}

int main ()
{
	int n ; 
	fin >> n ; 
	for ( int i = 1 ; i <= n ; ++ i ) {
		fin >> v[i] ; 
	}
	srand (time(NULL)) ;
	Q (1,n) ;
	for ( int i = 1 ; i <= n ; ++ i ) {
		fout << v [i] << ' ' ; 
	}
	return 0 ; 
}