Cod sursa(job #1279529)

Utilizator andrei_r_97Radoi Andrei andrei_r_97 Data 30 noiembrie 2014 15:42:16
Problema Sortare prin comparare Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>
#include <stdlib.h>

#define MAX 500000

void quicksort(int v[], int left, int right) {
  int i = left;
  int j = right;
  int pivot = v[ ( left + right ) / 2];
  int tmp;

  while ( i <= j ) {
    while ( v[i] < pivot )
      i++;
    while ( v[j] > pivot )
      j--;
    if ( i <= j ) {
      tmp = v[i];
      v[i] = v[j];
      v[j] = tmp;
      i++;
      j--;
    }
  }

  if ( left < j )
    quicksort(v,left,j);
  if ( i < right )
    quicksort(v,i,right);
}

int main()
{
  FILE *in  = fopen("algsort.in","r");
  FILE *out = fopen("algsort.out","w");

  int i, n, v[MAX];
  fscanf(in, "%d", &n);
  for ( i = 0; i < n; i++ )
    fscanf(in, "%d", &v[i]);
  quicksort(v,0,n-1);
  for ( i = 0; i < n; i++ )
    fprintf(out, "%d ", v[i]);

  fclose(in);
  fclose(out);

  return 0;
}