Cod sursa(job #2669928)

Utilizator YusyBossFares Yusuf YusyBoss Data 8 noiembrie 2020 14:29:04
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <algorithm>
#include <stdio.h>
#define NMAX 500000

using namespace std;

int v[NMAX + 1];

int sortare(int begin, int end) {
  int b, e, piv;

  b = begin; e = end; piv = v[(b + e) / 2];

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

  while (b < e) {
    swap(v[b], v[e]);

    do b++; while (v[b] < piv);
    do e--; while (v[e] > piv);
  }

  if (begin < e)
    sortare(begin, e);
  if (e + 1 < end)
    sortare(e + 1, end);
}

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

  fin = fopen("algsort.in", "r");
  fscanf(fin, "%d", &n);
  for (i = 0; i < n; i++)
    fscanf(fin, "%d", &v[i]);
  fclose( fin );

  sortare(0, n - 1);

  fout = fopen("algsort.out", "w");
  for (i = 0; i < n; i++)
    fprintf(fout, "%d ", v[i]);
  fclose( fout );
  return 0;
}