ciao ragazzi, ho un piccolo problema con un esercizio, allora questo codice che ho postato è l'oridnamento di un vettore statico con il bubble sort. Il problema è che l'esercizio mi richiede di renderlo più efficente, modificandolo in modo tale da ridurre il numero dei passaggi ad ogni incremento della variabile "pass", cioè siccome al primo passaggio il decimo elemento sarà sicuramente andato nell'ultima posizione(a[9]) perchè al secondo passaggio non gli fai controllare solo le altre nove posizioni rimaste? cioè da a[0] ad a[8]...nel terzo passaggio da a[0] ad a[7] e così via....è un po confuso come l'ho scritto spero che capiate qualcosa XD....e mi diate qualche spuntocodice:#include <stdio.h> #define SIZE 10 int main() { int a[SIZE] = {78,3,5,6,7,8,1,2,34,56}; int idx; /* contatore */ int pass; int temp; printf("Valori del vettore in posizione originale sono: \n"); printf("\n"); for(idx = 0;idx < SIZE; idx++){ printf("%3d", a[idx]); }/* fine ciclo di stampa del vettore disordinato */ printf("\n"); /*bubble sort*/ for(pass = 1; pass < SIZE; pass++){ for(idx = 0; idx < SIZE - 1; idx++){ if(a[idx]>a[idx+1]){ temp = a[idx]; a[idx] = a[idx+1]; a[idx+1] = temp; } /* fine scambio */ }/*fine for interno*/ }/*fine for esterno*/ printf("\n****** - bubble sort - *******\n"); printf("\nGli elementi del vettore ordinati sono: \n"); printf("\n"); /*stampa vettore ordinato*/ for(idx = 0; idx < SIZE; idx++){ printf("%3d", a[idx]); } printf("\n\n"); system("pause"); return 0; }