Mai intai trebuie sa te autentifici.
Cod sursa(job #1018545)
Utilizator | Data | 29 octombrie 2013 18:43:20 | |
---|---|---|---|
Problema | Sortare prin comparare | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.88 kb |
#include <fstream>
#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()
{
int n; cin >> n;
for(int i = 0; i < n; i++)
cin >> v[i];
qsort(v);
cin.close();
cout.close();
return 0;
}