raeiko (Normal User)
Newbie
Messaggi: 1
Iscritto: 15/02/2009
|
Salve ragazzi,
ho iniziato a studiare programmazione un mesetto fa e in questo momento sto iniziando a studiare gli arrays.
Uno degli esercizi che devo risolvere mi chiede di modificare l'algoritmo bubble sort per verificare se alla fine di ogni iterazione è stato effettuato uno scambio o meno. Se non è stato effettuato nessuno scambio il programma termina altrimenti è necessaria almeno un'altra iterazione.
Ho provato a scrivere il codice (considerando che non posso usare nè variabili booleane nè flags xkè non le ho ancora studiate) ma proprio non mi riesce.
Non cerco qualcuno che faccia i compiti per me,vorrei sono capire come procedere.
Grazie,
raeiko
Codice sorgente - presumibilmente Delphi |
/* Program that modifies the bubble sort array in fig. 6.15 */ #include <stdio.h> #define SIZE 10 int main ( void ) { int a[ SIZE ] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 }; /* declare and initialize array a */ int pass; /* passes counter */ int i; /* comparisons counter */ int hold; /* temporary location used to swap arrays elements */ int NumOfComparisons = 0; printf( "Data items in original order:\n\n" ); for ( i = 0; i < SIZE; i++ ){ /* display array output */ printf( "%4d", a[ i ] ); } /* end of for loop */ /* bubble sort */ for ( pass = 1; pass < SIZE; pass++ ){ for ( i = 0; i < SIZE - 1; i++ ){ if ( a[ SIZE ] == a[ 1 ] < a[ i + 1] ){ break; } else if ( a[ i ] > a[ i + 1] ){ hold = a[ i ]; a[ i ] = a[ i + 1]; a[ i + 1] = hold; pass++; }/* end of if */ NumOfComparisons = NumOfComparisons + 1; }/* end of inner for */ }/* end of outer for */ printf( "\nData items in ascending order:\n\n" ); for ( i = 0; i < SIZE; i++ ){ /* output array in ascending order */ printf( "%4d", a[ i ] ); } printf( "\n\n" ); printf( "Number of comparisons: %d\n", NumOfComparisons ); return 0; }
|
|