Ciao a tutti, come da titolo, ho sviluppato un programma C che ordina un vettore di interi. Il programma funziona correttamente ma, arrivato alla fine dell'ordinamento, il programma si blocca (ripeto, pur mostrando il vettore ordinato). Qualcuno potrebbe dirmi dove è l' errore? Grazie in anticipo.

codice:
#include <stdio.h>#include <stdlib.h>
#define max 10


void scambia (int array[], int x, int z){
    int tmp;
    
    tmp=array[x];
    array[x]=array[z];
    array[z]=tmp;
}


void bubblesort (int array[], int dim, int i){
    int x, z;
    for(x=1;x<dim;x++){
        for(z=dim-1;z>=x;z--){
            if (array[z-1]>array[z]){
                scambia (array, z-1, z);
            }
        }
    }
        printf("\nArray dopo l'ordinamento... ");
    for(i=0;i<dim;i++){
        printf("%d ", array[i]);
    }
    printf("\n");
}


int main (){    
    int array[max];
    int dim=0;
    int i=0;
    int x,z;
    
    printf("\nQuanti numeri vuoi inserire? ");
    scanf("%d",&dim);
    for(i=0;i<dim;i++){
        printf("\nInserisci %do numero: ", (i+1));
        scanf("%d", &array[i]);
    }
    
    printf("\nMostro i numeri dell'array (prima dell'ordinamento): ");
    for(i=0;i<dim;i++){
        printf("\n%d ", array[i]);
    }
    printf("\n");
    
    printf("\nOrdino i numeri... ");
    bubblesort (array, dim, i);
    scambia (array, x, z);


    printf("\n");
    system ("pause");
    return 0;
}