Pagini recente » Cod sursa (job #2434515) | Cod sursa (job #1673637) | Cod sursa (job #896439) | Cod sursa (job #1740689) | Cod sursa (job #2507442)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int N=100001;
int v[N],n;
int partitie(int st,int dr)
{
int p=st;
for(int i=st;i<dr;i++)
{
if(v[i]<=v[dr])swap(v[i],v[p++]);
}
swap(v[p],v[dr]);
return p;
}
void partitie3(int st,int dr,int &p1,int &p2)
{
p1=st;
p2=dr-1;
for(int i=st;i<p2;i++)
{
if(v[i]<v[dr])
{
swap(v[i],v[p1++]);
}
else if(v[i]>v[dr])
{
swap(v[i],v[p2--]);
}
}
swap(v[dr],v[++p2]);
}
void qs(int st,int dr)
{
if(st>=dr)
{
return;
}
int p1,p2;
int p=partitie(st,dr);
qs(st,p-1);
qs(p+1,dr);
}
int main()
{
fin>>n;
for(int i=0;i<n;i++)
fin>>v[i];
for(int i=n;i>0;i--)
{
int p=rand()%i;
swap(v[i-1],v[p]);
}
qs(0,n-1);
for(int i=0;i<n;i++)
fout<<v[i]<<" ";
return 0;
}