Cod sursa(job #1480424)

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

#define Nadejde 500000

int N;
int a[Nadejde];

void class(int b, int mid, int e) {
  int i = b, j = mid + 1, k = 0, tmp[Nadejde];
  while ((i <= mid) && (j <= e)) {
    if (a[i] < a[j]) {
      tmp[k++] = a[i++];
    } else {
      tmp[k++] = a[j++];
    }
  }
  while (i <= mid) {
    tmp[k++] = a[i++];
  }
  while (j <= e) {
    tmp[k++] = a[j++];
  }
  for (i = b; i <= e; i++) {
    a[i] = tmp[i - b];
  }
}

void sort(int b, int e) {
  if (b < e) {
    int mid = (b + e) >> 1;
    sort(b, mid);
    sort(mid + 1, e);
    class(b, mid, 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;
}