Pagini recente » Cod sursa (job #808203) | Cod sursa (job #2755440) | Cod sursa (job #1231861) | Borderou de evaluare (job #157041) | Cod sursa (job #1131993)
// Infoarena. Arhiva Educationala. Sortarea Prin Comparatie.
#include<iostream>
#include<fstream>
#include<cstdlib>
using namespace std;
void QuickSort(long int *,int,int);
int Partition(long int*,int,int);
int main(){
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
long int A[500005]; int n;
cin>>n;
// A=new long int[n+5];
for(int i=0;i<n;i++) cin>>A[i];
QuickSort(A,0,n-1);
for(int i=0;i<n;i++) cout<<A[i]<<" ";
}
void QuickSort(long int *A,int start,int end){
if(start<end){
int pIndex=Partition(A,start,end);
QuickSort(A,start,pIndex-1);
QuickSort(A,pIndex+1,end);
}
}
int Partition(long int *A,int st,int dr){
int p=st+rand()%(dr-st+1);
long int pivot=A[p];
while(st<dr){
while(A[st]<pivot) st++;
while(A[dr]>pivot) dr--;
swap(A[st],A[dr]);
if( (A[st]==A[dr]) /* && (A[dr]==pivot)*/ ){
st++;
}
}
return dr;
}