Cod sursa(job #1131742)

Utilizator toncuvasileToncu Vasile toncuvasile Data 1 martie 2014 12:27:16
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
// 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.in","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;
}