Cod sursa(job #2220090)

Utilizator andrei.arnautuAndi Arnautu andrei.arnautu Data 10 iulie 2018 15:16:00
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
/**
  *  Worg
  */
#include <cstdio>
#include <algorithm>

FILE *fin = freopen("algsort.in", "r", stdin); FILE *fout = freopen("algsort.out", "w", stdout);

const int MAX_N = 5e5 + 5;

void QuickSort(int *arr, int left, int right) {
  int a = left, b = right, pivot = arr[(left + right) / 2];

  do {
    while(a < right && arr[a] < pivot) {
      a++;
    }

    while(b > left && arr[b] > pivot) {
      b--;
    }

    if(a <= b) {
      std::swap(arr[a], arr[b]); 
      a++; b--;
    }
  }while(a <= b);

  if(left < b) {
    QuickSort(arr, left, b);
  }
  if(a < right) {
    QuickSort(arr, a, right);
  }
}

int main() {
  int n, arr[MAX_N]; scanf("%d", &n);

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

  QuickSort(arr, 1, n);

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