Pagini recente » Cod sursa (job #2960557) | Cod sursa (job #3150627) | Cod sursa (job #1520849) | Cod sursa (job #2980130) | Cod sursa (job #1131743)
// Implementarea Algoritmului QuickSort.
#include<iostream>
#include<fstream>
#include<cstdlib>
using namespace std;
void q_sort(int *,int,int);
int pivot(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];
q_sort(A,0,n-1);
for(int i=0;i<n;i++) cout<<A[i]<<" ";
}
void q_sort(int *A,int st,int dr){
if(dr-st>1){
int pIndex=pivot(A,st,dr);
q_sort(A,st,pIndex-1);
q_sort(A,pIndex+1,dr);
}
}
int pivot(int *A,int st,int dr){
int p=st+rand()%(dr-st);
while(st<dr){
while(A[st]<A[p]) st++;
while(A[dr]>A[p]) dr--;
if(st==p) p=dr;
else p=st;
swap(A[st],A[dr]);
}
return p;
}