Cod sursa(job #1745917)

Utilizator Horia14Horia Banciu Horia14 Data 22 august 2016 15:19:58
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<fstream>
#define NMax 500000
using namespace std;

int a[NMax], n;

void Read()
{
    ifstream fin("algsort.in");
    fin >> n;
    for(int i=0; i<n; i++)
        fin >> a[i];
    fin.close();
}

int Div(int p, int q)
{
    int left = p , right = q, pivot = a[p];
    while(left < right)
    {
        while(left < right && a[right] >= pivot) right--;
        a[left] = a[right];
        while(left < right && a[left] <= pivot) left++;
        a[right] = a[left];
    }
    a[left] = pivot;
    return left;
}

void quicksort(int p, int q)
{
    int m = Div(p, q);
    if(m-1 > p) quicksort(p, m-1);
    if(m+1 < q) quicksort(m+1, q);
}

int main()
{
    ofstream fout("algsort.out");
    Read();
    quicksort(0, n-1);
    for(int i=0; i<n; i++)
        fout << a[i] <<" ";
    fout.close();
    return 0;
}