Cod sursa(job #1224248)

Utilizator o_micBianca Costin o_mic Data 30 august 2014 11:49:20
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#define MAX_LENGTH 500005

using namespace std;

int v[MAX_LENGTH];

void quick_sort(int left, int right)
{
    int i, j, pos, pivot, ok = 1;
    if(left < right - 1)
    {
        pos = rand() % (right - left) + left;
        pivot = v[pos];
        i = left - 1;
        j = right;
        while(ok)
        {
            do
            {
                i++;
            }while(v[i] < pivot);
            do
            {
                j--;
            }while(v[j] > pivot);
            if(i < j)
                swap(v[i], v[j]);
            else
               ok = 0;
        }
        quick_sort(left, j+1);
        quick_sort(j+1, right);
    }
}

int main()
{
    int n, i;
    fstream f("algsort.in", ios::in);
    fstream g("algsort.out", ios::out);
    f >> n;
    for(i = 0 ; i < n ; i++)
        f >> v[i];
    srand(time(NULL));
    quick_sort(0, n);
    for(i = 0 ; i < n ; i++)
        g << v[i] << " ";
    return 0;
}