Pagini recente » Cod sursa (job #2727100) | Cod sursa (job #3279111) | Cod sursa (job #1965241) | Cod sursa (job #58903) | Cod sursa (job #1164581)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("algsort.in");
ofstream out ("algsort.out");
const int MAXN = 500001;
int A[MAXN];
inline void swap (int &A, int &B)
{
int t = A;
A = B;
B = t;
}
int partition (int st, int dr)
{
int x;
int i = st - 1, j = dr;
swap (A[(st + dr) / 2], A[dr]);
x = A[dr];
while (i < j){
while (i < j && A[++ i] < x);
while (i < j && A[-- j] > x);
swap (A[i], A[j]);
}
swap (A[i], A[dr]);
return i;
}
void quicksort (int st, int dr)
{
if (st <= dr){
int p = partition (st, dr);
quicksort (st, p - 1);
quicksort (p + 1, dr);
}
}
int main()
{
int N, i;
in >> N;
for (i = 1; i <= N; i ++)
in >> A[i];
quicksort (1, N);
for (i = 1; i <= N; i ++)
out << A[i] << " ";
in.close ();
out.close ();
return 0;
}