Pagini recente » Cod sursa (job #2170556) | Cod sursa (job #2351318) | Cod sursa (job #665856) | Cod sursa (job #2810356) | Cod sursa (job #2580966)
#include <iostream>
#include <fstream>
#define MAX 500100
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int A[MAX];
int * QUICKSORT(int A[], int inf, int sup) {
int x, i, j, t;
i = inf;
j = sup;
x = A[(i + j) / 2]; //Elementul din mijloc e pivotul
do {
while ( (i < sup) && (A[i] < x) ) i++; //Cate elemente mai mici decat pivotul sunt
while ( (j > inf) && (A[j] > x) ) j--; //Cate elemente mai mari decat pivotul
if ( i <= j ) { //Le schimbam intre ele
t = A[i];
A[i] = A[j];
A[j] = t;
i++;
j--;
}
} while ( i <= j );
if ( inf < j ) QUICKSORT(A, inf, j); //Sortam bucatile ramase
if ( i < sup ) QUICKSORT(A, i, sup);
return A;
}
int main() {
std::ios_base::sync_with_stdio(false); //Pe unele teste creste putin timpul(maxim 20ms) pe unul dintre teste il scade cu 200ms
int N;
in>>N;
for(int i=1;i<=N;i++)
in>>A[i];
int*B=QUICKSORT(A,1,N);
for(int i=1;i<=N;i++)
out<<B[i]<<" ";
return 0;
}