Pagini recente » Cod sursa (job #1504673) | Cod sursa (job #2028221) | Cod sursa (job #45053) | Cod sursa (job #1176167) | Cod sursa (job #474968)
Cod sursa(job #474968)
#include<iostream>
#include<fstream>
#include<time.h>
#include<unistd.h>
#define N 100000
using namespace std;
int a[500010];
ofstream g;
int partition(int lo, int hi){
int i = lo, j = hi;
int aux;
int loc = lo;
while (i < j){
while ( j != loc && a[j] >= a[loc])
j--;
if (a[j] < a[loc]){
aux = a[loc];
a[loc] = a[j];
a[j] = aux;
loc = j;
}
while ( i != loc && a[i] <= a[loc])
i++;
if (a[i] > a[loc]){
aux = a[loc];
a[loc] = a[i];
a[i] = aux;
loc = i;
}
}
return loc;
}
void quick(int lo, int hi){
int x, nx, aux, i, j;
if (lo < hi){
nx = partition(lo, hi);
quick(lo, nx-1);
quick(nx+1, hi);
}
}
int main(){
ifstream f("algsort.in");
g.open("algsort.out");
int n, i;
f>>n;
srand(getpid());
for (i = 0; i < n; i++)
f>>a[i];
quick(0, n-1);
for (i = 0; i < n; i++)
g<<a[i]<<" ";
g<<'\n';
return 0;
}