Pagini recente » Cod sursa (job #2807114) | Cod sursa (job #1023528) | Cod sursa (job #595510) | Cod sursa (job #2931224) | Cod sursa (job #2295948)
#include <fstream>
#include <cstdlib>
#define nmax 500001
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n,a[nmax];
int AlegRandPivot(int st,int dr)
{ int random=st+rand()%(dr-st);
return random;
}
int partitie(int st, int dr)
{ int pivot=a[dr];
int i,j;
i=st-1;
for(j=st; j<=dr; j++)
if(a[j]<pivot) {i++; swap(a[i],a[j]);}
swap(a[i+1],a[dr]);
return i+1;
}
void QuickSort(int st,int dr)
{ if(st<dr)
{ int p=AlegRandPivot(st,dr);
swap(a[p],a[dr]);;
int pivot=partitie(st,dr);
QuickSort(st,pivot-1);
QuickSort(pivot+1,dr);
}
}
int main()
{ fin>>n;
int i;
for(i=1; i<=n; i++) fin>>a[i];
QuickSort(1,n);
for(i=1; i<=n; i++) fout<<a[i]<<" ";
return 0;
}