Cod sursa(job #3327033)

Utilizator Coman_DianaComan Diana Coman_Diana Data 1 decembrie 2025 22:20:04
Problema Sortare prin comparare Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <stdio.h>
#include <stdlib.h>

#define NMAX 500000

int vec[NMAX + 1];

void my_qsort( int vec[], int begin, int end ) {
  int pivot;
  pivot = vec[(begin + end) / 2];

  int b = begin, e = end;

  while ( vec[b] < pivot )
    b++;

  while ( vec[e] > pivot )
    e--;

  int aux;
  while ( b < e ) {
    aux = vec[b];
    vec[b] = vec[e];
    vec[e] = aux;

    do
      b++;
    while ( vec[b] < pivot );

    do
      e--;
    while ( vec[e] > pivot );
  }

  if ( begin < e )
    my_qsort( vec, begin , e );

  if ( e + 1 < end )
    my_qsort( vec, e + 1, end );
}

int main()
{
    FILE *fin, *fout;
    int num_n, ind;

    fin = fopen( "algsort.in", "r" );
    fscanf( fin, "%d", &num_n );

    for ( ind = 0; ind < num_n; ind++ )
      fscanf( fin, "%d", &vec[ind] );
    fclose( fin );

    my_qsort( vec, 0, num_n - 1 );

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