Cod sursa(job #2911858)

Utilizator Alex_HossuHossu Alexandru Alex_Hossu Data 3 iulie 2022 12:39:15
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>

int v[500000];

void qSort(int sortBegin, int sortEnd) {
  int aux, b = sortBegin, e = sortEnd;
  int pivot = v[(b + e) / 2];

  while (v[b] < pivot)
    b++;
  while (v[e] > pivot)
    e--;

  while (b < e) {
    aux = v[b];
    v[b] = v[e];
    v[e] = aux;
    do
      b++;
    while (v[b] < pivot);
    do
      e--;
    while (v[e] > pivot);
  }


  if (sortBegin < e)
    qSort(sortBegin, e);

  if (e + 1 < sortEnd)
    qSort(e + 1, sortEnd);
}

int main() {
  FILE *fin, *fout;
  int n;
  int i;

  fin = fopen("algsort.in", "r");

  fscanf(fin, "%d", &n);
  for (i = 0; i < n; i++)
    fscanf(fin, "%d", &v[i]);

  fclose(fin);

  qSort(0, n - 1);

  fout = fopen("algsort.out", "w");

  for (i = 0; i < n; i++)
    fprintf(fout, "%d ", v[i]);

  fclose(fout);

  return 0;
}