Cod sursa(job #1815847)

Utilizator andreiugravuFMI Andrei Zugravu andreiugravu Data 25 noiembrie 2016 20:34:48
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
//QuickSort

#include <fstream>
#include <stdlib.h>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

#define dimMax 500005
int N, k;

void QuickSort(int v[], int left, int right) {
   int pivot = v[(int)rand()%(right-left) + left];
   int i, j;

   i = left, j = right;
   do {
        //caut pozitiile
        while(v[i] < pivot && i <= right) i++;
        while(v[j] > pivot && j >= left) j--;

        if(i <= j) {
            swap(v[i], v[j]); //interschimb
            i++; j--;
        } //trec mai departe
   }
   while(i <= j); //cat timp nu se intalnesc

   if(left < j) QuickSort(v, left, j);
   if(i < right) QuickSort(v, i, right);
}

int main()
{
    int v[dimMax], i;

    fin>>N;
    for(i = 0 ; i < N ; i++)
        fin>>v[i];

    QuickSort(v, 0, N - 1);

    for(i = 0 ; i < N ; i++)
        fout<<v[i]<<' ';

    fin.close();
    fout.close();

    return 0;
}