Cod sursa(job #2513513)

Utilizator thinkphpAdrian Statescu thinkphp Data 23 decembrie 2019 11:49:02
Problema Sortare prin comparare Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <stdio.h>
#include <malloc.h>
#define FIN "algsort.in"
#define FOUT "algsort.out"

void c_s(int *p, int n) {
     
     float shrinkFactor = 1.3;
     int swapped = 0, 
         gap = n, 
         i;

         while(gap > 1 || swapped) {

               swapped = 0;

               if(gap > 1) gap  = gap / shrinkFactor;

               for(i = 0; (i + gap) < n; ++i) {

                       if(p[i] > p[i+gap]) {

                           int holder = p[i];
                               p[i] = p[i+gap];
                               p[i+gap] = holder;
                               swapped = 1; 
                       }

               }  
         }   

}

int main() {

    int *p, n, i;

    freopen(FIN, "r", stdin);
 
     freopen(FOUT, "w", stdout);

    scanf("%d", &n);

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

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

    c_s(p, n);

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

    free(p);

return(0);
}