Pagini recente » Borderou de evaluare (job #157041) | Cod sursa (job #1131993) | Cod sursa (job #1231827) | Cod sursa (job #2414222) | Cod sursa (job #1131988)
// Infoarena. Arhiva Educationala. Sortarea Prin Comparatie.
#include<iostream>
#include<fstream>
#include<cstdlib>
using namespace std;
void QuickSort(int *,int,int);
int Partition(int*,int,int);
int main(){
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int *A,n;
cin>>n;
A=new 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(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(int *A,int st,int dr){
int p=st+rand()%(dr-st+1);
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;
}