Cod sursa(job #1314250)

Utilizator danielmaxim95FMI Maxim Daniel danielmaxim95 Data 11 ianuarie 2015 17:34:08
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
//QuickSort
#include <cstdio>
#include <stdlib.h>
#include <time.h>
#include <algorithm>
#define NMAX 500003

using namespace std;

int v[NMAX],n;

int pivot(int st, int dr)
{
    int p=rand()%(dr-st+1)+st, x;
    x=v[p];
    while(st<=dr)
    {
        while(v[st]<x) st++;
        while(v[dr]>x) dr--;
        if(st<=dr)
            swap(v[st++],v[dr--]);
    }
    return dr;
}

void quick(int s, int d)
{
    int m;
    if(s<d)
    {
        m = pivot(s,d);
        quick(s,m);
        quick(m+1,d);
    }
}


int main()
{
    int i;
    FILE *f = fopen("algsort.in", "r");
    fscanf(f, "%d", &n);
    for(i=1; i<=n; i++)
        fscanf(f, "%d", &v[i]);
    fclose(f);

    srand(time(NULL));
    quick(1,n);

    f = fopen("algsort.out", "w");
    for(i=1; i<=n; i++)
        fprintf(f, "%d ", v[i]);
    fclose(f);
    return 0;
}