Cod sursa(job #1131762)

Utilizator toncuvasileToncu Vasile toncuvasile Data 1 martie 2014 13:56:36
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
// 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 start,int end){
    int pivot=A[end];
    int pIndex=start;

    for(int i=start;i<end;i++){
        if(A[i]<=pivot){
            swap(A[i],A[pIndex++]);
        }
    }

    swap(A[pIndex],A[end]);
    return pIndex;
}