Cod sursa(job #1718679)

Utilizator oldatlantianSerban Cercelescu oldatlantian Data 18 iunie 2016 19:13:32
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;

const int NMAX = 500005;

int v[NMAX];

void quick_sort(int st, int dr) {
    int b = st,
        e = dr,
        p = v[rand()%(dr-st+1)+st];


    while(b<=e) {
        while(v[b]<p) b++;
        while(v[e]>p) e--;

        if(b<=e) {
            swap(v[b], v[e]);
            b++;
            e--;
        }
    }

    if(b<dr) quick_sort(b, dr);
    if(e>st) quick_sort(st, e);
}

int main(void) {
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);
    int n;

    scanf("%d",&n);
    for(int i=1; i<=n; ++i)
        scanf("%d",&v[i]);

    srand(time(NULL));

    quick_sort(1, n);

    for(int i=1; i<=n; ++i)
        printf("%d ",v[i]);
    printf("\n");

    fclose(stdin);
    fclose(stdout);
    return 0;
}