Cod sursa(job #1480418)

Utilizator stoianmihailStoian Mihail stoianmihail Data 2 septembrie 2015 16:13:34
Problema Sortare prin comparare Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>

#define Nadejde 500000

int N;
int a[Nadejde];

void sort(int begin, int end) {
  int b = begin, e = end, pivot = a[(b + e) >> 1];
  while (b <= e) {
    while (a[b] < pivot) {
      b++;
    }
    while (a[e] > pivot) {
      e--;
    }
    if (b <= e) {
      int tmp = a[b];
      a[b++] = a[e];
      a[e--] = tmp;
    }
  }
  if (b < end) {
    sort(b, end);
  }
  if (begin < e) {
    sort(begin, e);
  }
}

int main(void) {
  int i;
  FILE *f = fopen("algsort.in", "r");

  fscanf(f, "%d", &N);
  for (i = 0; i < N; i++) {
    fscanf(f, "%d", &a[i]);
  }
  fclose(f);

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

  sort(0, N - 1);
  for (i = 0; i < N; i++) {
    fprintf(f, "%d ", a[i]);
  }
  fputc('\n', f);
  fclose(f);

  /// Multumim Doamne!
  puts("Doamne ajuta!");
  return 0;
}