Pagini recente » Cod sursa (job #19732) | Cod sursa (job #999969) | Cod sursa (job #525829) | Cod sursa (job #2163584) | Cod sursa (job #1598281)
/*
#include <fstream>
using namespace std;
const int MAXN = 500003;
void read( int &N, int v[] ) {
ifstream fin("algsort.in");
fin >> N;
for ( int i = 0; i < N; ++i )
fin >> v[i];
}
void quicksort( int v[], int first, int last ) {
if ( last < first )
return;
int pivot = v[ first ];
int i = first + 1;
int j = last;
while ( i < j ) {
while ( i <= last && v[i] < pivot )
++i;
while ( j >= 0 && v[j] > pivot )
--j;
if ( i < j )
swap( v[i], v[j] );
}
swap( v[j], v[first] );
quicksort( v, first, j-1 );
quicksort( v, j+1, last );
}
void write( int N, int v[] ) {
ofstream fout("algsort.out");
for ( int i = 0; i < N; ++i )
fout << v[i] << ' ';
}
int main () {
int N, v[MAXN];
read( N, v );
quicksort( v, 0, N-1 );
write( N, v );
return 0;
}
*/
#include<fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500002], i, j, n, pivot, st, dr, aux;
void quicksort(int st, int dr){
pivot = v[(st+dr)/2];
i = st;
j = dr;
while(i <= j){
while(v[j] > pivot) j--;
while(v[i] < pivot) i++;
if(i <= j){
aux = v[i];
v[i] = v[j];
v[j] = aux;
i++;
j--;
}
}
if(st < j) quicksort(st, j);
if(i < dr) quicksort(i, dr);
}
int main(){
fin >> n;
for(i=1; i<=n; i++) fin >> v[i];
quicksort(1, n);
for(i=1; i<=n; i++) fout << v[i] << " ";
return 0;
}