Cod sursa(job #945858)

Utilizator robert_stefanRobert Stefan robert_stefan Data 3 mai 2013 09:13:40
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
/*
QuickSort
*/
#include<fstream>
 
using namespace std;
 
ifstream fin("algsort.in");
ofstream fout("algsort.out");
 
int v[500000],n,i;
 
void qSort(int left, int right);
 
int main()
{
    fin>>n;
    for(i=0;i<n;i++)
        fin>>v[i];
    qSort(0,n-1);
    for(i=0;i<n;i++)
        fout<<v[i]<<' ';
    fout<<'\n';
    fin.close();
    fout.close();
    return 0;
}
 
void qSort(int left, int right)
{
    int pivot=v[(left+right)/2],tmp,min=left,max=right;
    do{
        while(v[min]<pivot)
            min++;
        while(v[max]>pivot)
            max--;
        if(min<=max)
            tmp=v[min], v[min]=v[max], v[max]=tmp, min++, max--;
    }while(min<=max);
    if(left<max)
        qSort(left,max);
    if(right>min)
        qSort(min,right);
}