Cod sursa(job #1041954)

Utilizator arch_enemyAngela Gossow arch_enemy Data 26 noiembrie 2013 13:34:11
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>

#define NMAX 500001

using namespace std;

int N, i;
int Nums[NMAX];

inline void QuickSort(int Left, int Right) {

    if(Left >= Right) return;
    int iLeft, iRight, pivotVal = Nums[(Left+Right)/2];

    iLeft = Left, iRight = Right;
    while(iLeft <= iRight) {
        while(Nums[iLeft] < pivotVal) ++iLeft;
        while(Nums[iRight] > pivotVal) --iRight;

        if(iLeft <= iRight)
            swap(Nums[iLeft++], Nums[iRight--]);
    }

    QuickSort(Left, iRight);
    QuickSort(iLeft, Right);
}

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

    scanf("%d", &N);
    for(i = 1; i <= N; ++i)
        scanf("%d", &Nums[i]);

    QuickSort(1, N);
    for(i = 1; i <= N; ++i)
        printf("%d ", Nums[i]);

    return 0;
}