Pagini recente » Cod sursa (job #1938325) | Cod sursa (job #2488742) | Cod sursa (job #462909) | Cod sursa (job #2935666) | Cod sursa (job #2792007)
#include <iostream>
#include <fstream>
#include <cstdlib>
#define NMAX 500000
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int N, v[NMAX];
int partitie(int st, int dr)
{
int pivot = v[st + rand() % (dr - st + 1)];
int i = st - 1, j = dr + 1, tmp;
while (1){
do
i++;
while (v[i] < pivot);
do
j--;
while (v[j] > pivot);
if (i >= j) return j;
tmp = v[i], v[i] = v[j], v[j] = tmp;
}
}
void quickSort(int st, int dr)
{
if (st < dr){
int pivot = partitie(st, dr);
quickSort(st, pivot);
quickSort(pivot + 1, dr);
}
}
int main()
{
fin >> N;
for (int i = 0; i < N; ++i) fin >> v[i];
quickSort(0, N - 1);
for (int i = 0; i < N; ++i) fout << v[i] << " ";
fin.close();
fout.close();
return 0;
}