Cod sursa(job #2285079)

Utilizator ZappaManIosif Adrian-Mihai ZappaMan Data 18 noiembrie 2018 00:48:51
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>

const int NMAX = 500005;

int N;
int vec[NMAX];

int partition(int l, int r) {
   int i = l - 1;
   int pivot = vec[r];
   for (int j = l; j < r; ++j) {
      if (vec[j] <= pivot) {
         ++i;
         int aux = vec[i];
         vec[i] = vec[j];
         vec[j] = aux;
      }
   }
   int aux = vec[r];
   vec[r] = vec[i+1];
   vec[i+1] = aux;
   return i+1;
}

void quicksort(int l, int r) {
   if (l >= r) {
      return;
   }

   int p = partition(l, r);
   quicksort(l, p -1);
   quicksort(p + 1, r);
}

int main() {
   freopen("algsort.in", "r", stdin);
   freopen("algsort.out", "w", stdout);

   scanf("%d", &N);

   for (int i = 0; i < N; ++i) {
      scanf("%d", &vec[i]);
   }

   quicksort(0,N-1);
   for (int  i = 0; i < N; ++i) {
      printf("%d ", vec[i]);
   }

   fclose(stdin);
   fclose(stdout);
   return 0;
}