Cod sursa(job #1493076)

Utilizator Burbon13Burbon13 Burbon13 Data 28 septembrie 2015 18:20:39
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <cstdio>
#define nmx 500002
using namespace std;

int n,v[nmx];

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

void qsort(int left, int right){
    int pivot = left + (right - left) / 2, i = left, j = right;

    while(i <= j){
        while(v[i] < pivot)
            ++ i;
        while(v[j] > pivot)
            -- j;
        if(i <= j){
            v[i] = v[i] ^ v[j];
            v[j] = v[i] ^ v[j];
            v[i] = v[i] ^ v[j];
            ++ i;
            -- j;
        }
    }

    if(left < j)
        qsort(left,j);
    if(right > i)
        qsort(i,right);
}

void output(){
    for(int i = 1; i <= n; ++i)
        printf("%d ", v[i]);
}

int main(){
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);
    read();
    qsort(1,n);
    output();
    return 0;
}