Cod sursa(job #2669879)

Utilizator Luca_Miscocilucainfoarena Luca_Miscoci Data 8 noiembrie 2020 12:43:14
Problema Sortare prin comparare Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#define NMAX 500000
int v[NMAX + 5];
int swap(int a , int b){  // interschimbare
  int aux;
  aux = v[a];
  v[a] = v[b];
  v[b] = aux;
}
void qsort(int begin, int end){
  int pivot = v[(begin + end) /  2];
  int b = begin, e = end;
  while (v[b] < pivot)
    b++;
  while (v[e] > pivot)
    e--;
  while(b < e){
    swap(b,e);
    do
      b++;
    while(v[b] < pivot);
    do
      e--;
    while(v[e] > pivot);
  }
  if (begin < e)
    qsort(begin, e);
  if (e + 1 < end)
    qsort(e + 1, end);
}
int main(){
  FILE *fin ,*fout;
  fin = fopen("algsort.in","r");
  fout = fopen("algsort.out","w");
  int n,i;
  fscanf(fin,"%d",&n);
  for(i = 0; i < n; i++){
    fscanf(fin,"%d",&v[i]);
  }
  qsort(0,n - 1);
  for(i = 0;i < n;i ++){
    fprintf(fout,"%d ",v[i]);
  }
  return 0;
}