Cod sursa(job #1974520)

Utilizator DruffbaumPopescu Vlad Druffbaum Data 27 aprilie 2017 21:52:52
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>

const int MAXN = 5e5;

int v[MAXN];

void qsort(int begin, int end) {
  int aux, b = begin, e = end,
    pivot = v[(begin + end) / 2];
  while (b <= e) {
    while (v[b] < pivot) {
      ++b;
    }
    while (v[e] > pivot) {
      --e;
    }
    if (b <= e) {
      aux = v[b];
      v[b] = v[e];
      v[e] = aux;
      ++b; --e;
    }
  }
  if (b < end) qsort(b, end);
  if (begin < e) qsort(begin, e);
}

int main() {
  int n;
  FILE *f = fopen("algsort.in", "r");
  fscanf(f, "%d", &n);
  for (int i = 0; i < n; ++i) {
    fscanf(f, "%d", v + i);
  }
  fclose(f);
  qsort(0, n - 1);
  f = fopen("algsort.out", "w");
  for (int i = 0; i < n; ++i) {
    fprintf(f, "%d ", v[i]);
  }
  fprintf(f, "\n");
  fclose(f);
  return 0;
}