Pagini recente » Cod sursa (job #1327961) | Cod sursa (job #598030) | Cod sursa (job #656019) | Cod sursa (job #3188002) | Cod sursa (job #2111269)
#include <fstream>
#define intrare "algsort.in"
#define iesire "algsort.out"
using namespace std;
ifstream in(intrare);
ofstream out(iesire);
int n, arr[600005];
void Read()
{
in >> n;
for(int i = 1; i <= n; i++)
in >> arr[i];
}
int Divide(int p, int q)
{
int stanga = p, dreapta = q, pivot = arr[p];
while(stanga < dreapta)
{
while(stanga < dreapta && arr[dreapta] >= pivot) dreapta--;
arr[stanga] = arr[dreapta];
while(stanga < dreapta && arr[stanga] <= pivot) stanga++;
arr[dreapta] = arr[stanga];
}
arr[stanga] = pivot;
return stanga;
}
void Quick_Sort(int p, int q)
{
int m = Divide(p, q);
if(m - 1 > p) Quick_Sort(p, m - 1);
if(m + 1 < q) Quick_Sort(m + 1, q);
}
void Afisare()
{
for(int i = 1; i <= n; i++)
out << arr[i] << " ";
}
int main()
{
Read();
Quick_Sort(1, n);
Afisare();
}