Pagini recente » Cod sursa (job #2156396) | Cod sursa (job #1598027) | Cod sursa (job #2999548) | Cod sursa (job #2457165) | Cod sursa (job #1347136)
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
ifstream in ("algsort.in");
ofstream out ("algsort.out");
const int MAXN = 500010;
int V[MAXN];
int Partition (int st, int dr)
{
int i, j, p;
i = st - 1;
j = dr + 1;
p = V[st + rand () % (dr - st + 1)];
while (1){
do{
i ++;
} while (V[i] < p);
do{
j --;
} while (V[j] > p);
if (i < j)
swap (V[i], V[j]);
else
return j;
}
}
void Quicksort (int st, int dr)
{
if (st >= dr)
return;
int p = Partition (st, dr);
Quicksort (st, p);
Quicksort (p + 1, dr);
}
int main()
{
srand (time (0));
int N, i;
in >> N;
for (i = 1; i <= N; i ++)
in >> V[i];
Quicksort (1, N);
for (i = 1; i <= N; i ++)
out << V[i] << " ";
return 0;
}