Cod sursa(job #1020744)

Utilizator andreeaghetuUNIBUC andreeaghetu andreeaghetu Data 2 noiembrie 2013 16:09:09
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <ctime>
#include <stdlib.h>
using namespace std;
ifstream in ("algsort.in");
ofstream out ("algsort.out");
int v[500001], N;

int part(int a, int b)
{
    srand(time(NULL));
    int poz_piv=a+rand()%(b-a+1);
    int piv=v[poz_piv];
    swap(v[poz_piv], v[b]);
    poz_piv=b;
    int i=a-1;
    for(int j=a;j<b;j++)
    {
        if(v[j]<=piv)
        {
            i++;
            swap(v[i], v[j]);
        }
    }
    i++;
    swap(v[i], v[poz_piv]);
    return i;
}

void quicksort(int a, int b)
{
    if(a<b)
    {
        int mid=part(a, b);
        quicksort(a, mid-1);
        quicksort(mid+1, b);
    }
}

int main()
{
    in>>N;
    for (int i=0;i<N;i++)
        in>>v[i];
    quicksort(0, N-1);
    for (int i=0;i<N;i++)
        out<<v[i]<<" ";
}