Pagini recente » Cod sursa (job #872428) | Cod sursa (job #1994298) | Cod sursa (job #1472615) | Cod sursa (job #278878) | Cod sursa (job #1281571)
#include <fstream>
#include <ctime>
#include <stdlib.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
long a[500002],n,i;
int part(int p,int u){
int x = p+rand()%(u-p);
swap(a[p], a[x]);
int i,j,d=a[u];
j=p-1;
for(i=p;i<=u && i!=j;i++)
if(a[i]<=d) swap(a[++j],a[i]);
return j;
}
void quicksort(int p,int u){
if(p>=u)
return;
int poz=part(p,u);
if(p<poz-1);
quicksort(p,poz-1);
if(u>poz+1)
quicksort(poz+1,u);
}
int main(){
fin>>n;
for(i=1;i<=n;i++)
fin>>a[i];
srand(time(0));
quicksort(1,n);
for(i=1;i<=n;i++)
fout<<a[i]<<" ";
fin.close();fout.close();
return 0;
}