58> Benchmark tra sorting: bubble, selection, insertion

int swap_count = 0;
int comp_count = 0;
void incSwap() { swap_count++; }
void incComp() { comp_count++; }

void resetCounters(){
swap_count = 0;
comp_count = 0;
}
void printCounters(){
printf("Confronti effettuati: %d\n", comp_count);
printf("Scambi effettuati: %d\n", swap_count);
}
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define DIM 10

void carica(int []);
void sort_bubble(int []);
void sort_insertion(int []);
void sort_sel(int []);
void incSwap();
void incComp();
void resetCounters();
void printCounters();

int swap_count=0;
int comp_count=0;

int main(){
    int n,v[DIM];
    srand(time(NULL));
    carica(v);
    while(1){
        printf("0: exit\n1:carica\n2:bubble sort\n3:selection sort\n4:insertion sort\n");
        printf("Inserire l'opzione: ");
        scanf("%d",&n);
        fflush(stdin);
        switch(n){
            case 0:
                return 0;
            case 1:
                carica(v);
            break;
            case 2:
                resetCounters();
                sort_bubble(v);
                printCounters();
            break;
            case 3:
                resetCounters();
                sort_sel(v);
                printCounters();
            break;
            case 4:
                resetCounters();
                sort_insertion(v);
                printCounters();
            break;
            default:
                printf("Numero non valido\n");
            break;
        }
    }
}

void carica(int v[DIM]){
    int i;
    for(i=0;i<DIM;i++){
        v[i]=rand()%99;
    }
}

void sort_bubble(int v[DIM]){
    int i,j,temp;
    int v2[DIM];
    long int temp1,temp2;
    
    for(i=0;i<DIM;i++){
        v2[i]=v[i];
        printf("%d ",v2[i]);
    }
    putchar('\n');
    temp1=clock();
    for(i=0;i<DIM-1;i++){
        for(j=i+1;j<DIM;j++){
            incComp();
             if(v2[j]<v2[i]){
                incSwap();
                temp=v2[j];
                v2[j]=v2[i];
                v2[i]=temp;
            }
        }
    }
    temp2=clock();
    for(i=0;i<DIM;i++){
        printf("%d ",v2[i]);
    }
    printf("\nTempo di esecuzione: %li",temp2-temp1);
    putchar('\n');
}

void sort_insertion(int v[DIM]){
	int i,j,min;
    int v2[DIM];
    long int temp1,temp2;
    
    for(i=0;i<DIM;i++){
        v2[i]=v[i];
        printf("%d ",v2[i]);
    }
    putchar('\n');
    temp1=clock();
    for(i=1;i<DIM;i++){
        min=v2[i];
        for(j=i-1;(j>=0) && (min<v2[j]);j--){
            v2[j+1]=v2[j];
        }
        incSwap();
        v2[j+1]=min;
    }
    temp2=clock();
    for(i=0;i<DIM;i++){
        printf("%d ",v2[i]);
    }
    
    printf("\nTempo di esecuzione: %li",temp2-temp1);
    putchar('\n');
}

void sort_sel(int v[DIM]){
	int i,j,imin,temp;
    int v2[DIM];
    long int temp1,temp2;
    
    for(i=0;i<DIM;i++){
        v2[i]=v[i];
        printf("%d ",v2[i]);
    }
    putchar('\n');
	temp1=clock();
    for(i=0;i<(DIM-1);i++){
		imin=i;
		for(j=i+1;j<DIM;j++){
            incComp();
			if(v2[imin]>v2[j]){
				imin=j;
			}
		}
		if(i!=imin){
            incSwap();
            temp=v2[i];
            v2[i]=v2[imin];
            v2[imin]=temp;
		}
	}
    temp2=clock();
    for(i=0;i<DIM;i++){
        printf("%d ",v2[i]);
    }
    printf("\nTempo di esecuzione: %li",temp2-temp1);
    putchar('\n');
}

void incSwap() { swap_count++; }
void incComp() { comp_count++; }
void resetCounters(){
    swap_count=0;
    comp_count=0;
}

void printCounters(){
    printf("Confronti effettuati: %d\n",comp_count);
    printf("Scambi effettuati: %d\n",swap_count);
}

    
  
058.c