Pagini recente » Cod sursa (job #633985) | Cod sursa (job #738581) | Cod sursa (job #1437197) | Cod sursa (job #2857489) | Cod sursa (job #1545693)
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int N;
int V[500005];
void quickSort(int l, int r)
{
int i = l, j = r;
int pR = l + rand() % (r - l);
int pivot = V[pR];
if (j - i + 1 <= 11)
{
for (int ii = i; ii <= j; ++ii)
{
int nr = V[ii];
int jj = ii;
while (jj - 1 >= 1 && V[jj - 1] > nr)
{
V[jj] = V[jj - 1];
--jj;
}
V[jj] = nr;
}
i = r;
j = l;
}
else
{
while (i <= j)
{
while (V[i] < pivot)
++i;
while (V[j] > pivot)
--j;
if (i <= j)
{
int aux = V[i];
V[i] = V[j];
V[j] = aux;
++i;
--j;
}
}
}
if (l < j)
quickSort(l, j);
if (i < r)
quickSort(i, r);
}
int main()
{
srand (time(NULL));
fin >> N;
for (int i = 1; i <= N; ++i)
fin >> V[i];
quickSort(1, N);
for (int i = 1; i <= N; ++i)
fout << V[i] << ' ';
fout << '\n';
fin.close();
fout.close();
return 0;
}