Pagini recente » Cod sursa (job #1014063) | Cod sursa (job #1065910) | Cod sursa (job #2651985) | Cod sursa (job #2368721) | Cod sursa (job #623797)
Cod sursa(job #623797)
#include<fstream>
#include<algorithm>
#define NMAX 500010
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[NMAX], n;
void Citeste()
{
int i;
f>>n;
for (i=1; i<=n; ++i) f>>a[i];
}
int part(int st, int dr)
{
int s=st, d=dr, p=a[st];
while (s<=d)
{
while (a[s]<=p && s<=d) ++s;
while (a[d]>=p && d>=s) --d;
if (s<d) swap(a[d], a[s]);
}
swap(a[d], a[st]);
return d;
}
void Quick(int st, int dr)
{
int pz;
pz=part(st, dr);
if (pz-1>st) Quick(st, pz-1);
if (pz+1<dr) Quick(pz+1, dr);
}
void Scrie()
{
int i;
for (i=1; i<=n; ++i) g<<a[i]<<" ";
}
int main()
{
Citeste();
Quick(1, n);
Scrie();
f.close();
g.close();
return 0;
}