Cod sursa(job #2466605)

Utilizator LuciBBadea Lucian LuciB Data 2 octombrie 2019 18:33:27
Problema Sortare prin comparare Scor 40
Compilator c-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define VALOARE 10000
int v[VALOARE];
int pivotare(int st, int dr){
  int pivot, i, j, aux;
  pivot=v[dr];
  i=0;
  for(j=0; j<dr; j++)
    if(v[j]<=pivot){
      aux=v[i];
      v[i]=v[j];
      v[j]=aux;
      i++;
    }
  aux=v[i];
  v[i]=v[dr];
  v[dr]=aux;
  return i;
}
int piv_random(int st, int dr){
   int random, aux;
   srand(time(NULL));
   random=st+rand()%(dr-st);
   aux=v[random];
   v[random]=v[dr];
   v[dr]=aux;
   return pivotare(st, dr);
}
void quicksort(int st, int dr){
  int pivot;
  if(st<dr){
    pivot=piv_random(st, dr);
    quicksort(st, pivot-1);
    quicksort(pivot+1, dr);
  }
}
int main(){
  int n, i;
  FILE *fin, *fout;
  fin=fopen("algsort.in", "r");
  fscanf(fin, "%d", &n);
  for(i=0; i<n; i++)
    fscanf(fin, "%d", &v[i]);
  fclose(fin);
  quicksort(0, n-1);
  fout=fopen("algsort.out", "w");
  for(i=0; i<n; i++)
    fprintf(fout, "%d ", v[i]);
  fclose(fout);
  return 0;
}