Pagini recente » Cod sursa (job #2317653) | Cod sursa (job #130421) | Cod sursa (job #2950382) | Cod sursa (job #1593506) | Cod sursa (job #639694)
Cod sursa(job #639694)
#include<fstream.h>
#include<iostream.h>
int divide(int st,int dr);
void quicksort(int p,int q);
int a[500100],n;
int main()
{
int i;
ifstream in("algsort.in");
for(i=0,in>>n;i<n;in>>a[i],i++);
in.close();
quicksort(0,n-1);
ofstream out("algsort.out");
for(i=0;i<n;out<<a[i]<<" ",i++);
out.close();
return 0;
}
void quicksort(int p,int q)
{
int m=divide(p,q);
if(m-1>p)
quicksort(p,m-1);
if(m+1<q)
quicksort(m+1,q);
}
int divide(int st,int dr)
{
int x=a[st];
while(st<dr)
{
while(st<dr && a[dr]>=x)
dr--;
a[st]=a[dr];
while(st<dr && a[st]<=x)
st++;
a[dr]=a[st];
}
a[st]=x;
return st;
}