Pagini recente » Cod sursa (job #2960411) | Cod sursa (job #1266597) | Cod sursa (job #2810739) | Cod sursa (job #1863689) | Cod sursa (job #601112)
Cod sursa(job #601112)
using namespace std;
#include<iostream>
#include<fstream>
#include<cstdlib>
#define nmax 500010
ofstream fout("algsort.out");
int N,a[nmax];
int select(int l,int r)
{
int i,p;
int popiv=rand()%(r-l+1)+l;
int pivot=a[popiv];
swap(a[popiv],a[r]);
int fin=l;
for(i=l;i<r;i++)
{
if(a[i]<pivot)
{
swap(a[i],a[fin]);
fin++;
}
}
swap(a[fin],a[r]);
return fin;
}
void qsort(int l,int r)
{
//cout<<l<<" "<<r<<"\n";
if(l>r) return;
int p=select(l,r);
qsort(l,p-1);
qsort(p+1,r);
}
void cit()
{
ifstream fin("algsort.in");
fin>>N;
int i;
for(i=1;i<=N;i++)
{
fin>>a[i];
}
fin.close();
}
int main()
{
srand(time(0));
cit();
qsort(1,N);
int i;
for(i=1;i<=N;i++)
{
fout<<a[i]<<" ";
}
fout.close();
return 0;
}