Pagini recente » Cod sursa (job #2881294) | Cod sursa (job #722771) | Cod sursa (job #506301) | Cod sursa (job #2585677) | Cod sursa (job #2275811)
#include <iostream>
#include <fstream>
using namespace std;
///QUICKSORT
ifstream f("algsort.in");
ofstream g("algsort.out");
void schimba( int &a, int &b)
{
int aux = a;
a = b;
b = aux;
}
void citire(int &n, int x[500001])
{
int i;
f >> n;
for (i = 1; i <= n; i++)
{
f >> x[i];
}
}
void afisare(int n, int x[500001])
{
for(int i = 1; i <= n; i++)
g << x[i] << " ";
}
int quick(int st, int dr, int x[500001])
{
int i, j = st-1, piv = (st + dr) / 2, mij = x[piv];
for(i = st; i <= dr; i++)
{
if(x[i] < mij)
{
j++;
if(j == piv)
piv = i;
schimba(x[i], x[j]);
}
}
schimba(x[j + 1], x[piv]);
return j+1;
}
void QuickSort(int st, int dr, int x[500001])
{
if(st < dr)
{
int piv = quick(st, dr, x);
QuickSort(st, piv - 1, x);
QuickSort(piv + 1, dr, x);
}
}
int main()
{
int n, x[500001];
citire(n, x);
QuickSort(1, n, x);
afisare(n, x);
return 0;
}