Cod sursa(job #2404619)

Utilizator ShumaherAdasga Shumaher Data 13 aprilie 2019 09:58:59
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
#define MAX 500100
using namespace std;

ifstream in("algsort.in");
ofstream out("algsort.out");
int A[MAX];

void QUICKSORT(int A[], int inf, int sup) {
    int x, i, j, t;
    i = inf;
    j = sup;
    x = A[rand() % (sup - inf + 1) + 1]; //Elementul din mijloc e pivotul
    do {
        while ( (i < sup) && (A[i] < x) )
            i++; //Cate elemente mai mici decat pivotul sunt
        while ( (j > inf) && (A[j] > x) )
            j--; //Cate elemente mai mari decat pivotul
        if ( i <= j ) { //Le schimbam intre ele
            t = A[i];
            A[i] = A[j];
            A[j] = t;
            i++;
            j--;
        }
    } while ( i <= j );
    if ( inf < j )
        QUICKSORT(A, inf, j); //Sortam bucatile ramase
    if ( i < sup )
        QUICKSORT(A, i, sup);
}
int main() {
    srand(time(NULL));

    int N;
    in >> N;
    for(int i = 1; i <= N; i++)
        in >> A[i];
    QUICKSORT(A,1, N);

    for(int i = 1; i <= N; i++)
        out << A[i] << " ";


    return 0;
}