Cod sursa(job #2087206)

Utilizator thinkphpAdrian Statescu thinkphp Data 13 decembrie 2017 09:46:35
Problema Sortare prin comparare Scor 40
Compilator c Status done
Runda Arhiva educationala Marime 1.02 kb
#include <stdio.h>
#include <malloc.h>
#define FIN "algsort.in"
#define FOUT "algsort.out"

void CombSortAlgorithm(int *p, int n) {

     float shrinkFactor = 1.3;
     int gap = n, swapped = 1,
         i;

     while(gap > 1 || swapped) {

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

           swapped = 0; 
           for(i = 0; i + gap < n; ++i) {
               if(p[i] > p[i+gap]) {
                  int tmp = p[ i ];  
                      p[i] = p[i+gap];
                      p[i+gap] = tmp; 
                      swapped = 1;   
               }
           } 
     } 

};

typedef void (*ptrFn)(int *arr, int n);

int main() {

    int n, *arr;

    freopen(FIN, "r", stdin);

    freopen(FOUT, "w", stdout);

    scanf("%d", &n); 
  
    int i;

    arr = (int*) malloc( sizeof( arr ) );
 
    for(i = 0; i < n; ++i) scanf("%d", &arr[i]);

    ptrFn sort = CombSortAlgorithm;

    sort(arr, n); 

    for(i = 0; i < n; ++i) printf("%d ",  arr[i]);
 
 return( 0 );
};