Cod sursa(job #2192425)

Utilizator thinkphpAdrian Statescu thinkphp Data 5 aprilie 2018 21:59:05
Problema Sortare prin comparare Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 1.04 kb
#include <stdio.h>
#include <malloc.h>

void _quicksort(int *p, int lo, int hi) {

     int piv = p[ (lo + hi) >> 1], i = lo, j = hi;      

     while(i <= j) {

           while(p[i]<piv) i++;

           while(p[j]>piv) j--;

           if(i<=j) {

                int x = p[i]^p[j];
                    p[i] = p[i]^x;
                    p[j] = p[j]^x;
                    i++;
                    j--;
           } 
     } 


           if(lo<j) _quicksort(p, lo, j);

           if(hi>i) _quicksort(p, i, hi);

}

void quicksort(int *p, int n) {

     _quicksort(p, 0, n - 1);
      
}

int main() {

    const char *fin = "algsort.in";
    const char *fout = "algsort.out";

    int *v,
         n,
         i;   

    freopen(fin,"r",stdin);

    freopen(fout,"w",stdout);

    scanf("%d", &n);

    v = (int*)malloc(sizeof(int)  *  n);

    for(i = 0; i < n; ++i) scanf("%d", v + i);

    quicksort(v, n);

    for(i = 0; i < n; ++i) printf("%d ", *(v + i));

    free( v ); 

 return(0);
}