[C++] Sortowanie
Ostatnio zmodyfikowano 2016-04-28 17:15
Bardex Temat założony przez niniejszego użytkownika |
[C++] Sortowanie » 2016-04-28 16:30:14 Witam, czy ktoś mógłby mi wytłumaczyć jak zmienić kod sortowania bąbelkowego: void Sortowanie( int tab[], int size ) { for( int i = 0; i < size; i++ ) { for( int j = 0; j < size - 1; j++ ) { if( tab[ j ] > tab[ j + 1 ] ) swap( tab[ j ], tab[ j + 1 ] ); } } }
na taki, aby zliczał on ilość wykonanych operacji? Dajmy na to, że program wczytał 10 cyfr w kolejność 1,2,4,3,5,6,7,8,9,10 i ma je posortować od 1 do 10, ale ma także wypisać na ekranie, że wykonał 1 zamianę (4 <-> 3). |
|
Masterpc16 |
» 2016-04-28 16:34:02 Witam prosto kolego :) void Sortowanie( int tab[], int size ) { int ilosc_zamian( 0 ); for( int i = 0; i < size; i++ ) { for( int j = 0; j < size - 1; j++ ) { if( tab[ j ] > tab[ j + 1 ] ) { swap( tab[ j ], tab[ j + 1 ] ); ilosc_zamian++; cout << "Zamieniono " << tab[ j ] << " z " << tab[ j + 1 ]; } } } cout << "Wykonano " << ilosc_zamian << " zamian" }
|
|
Bardex Temat założony przez niniejszego użytkownika |
» 2016-04-28 16:39:42 Dzięki wielkie :), a jeszcze małe pytanko. Da radę zrobić to na tej samej zasadzie w sortowaniu koktajlowym? |
|
Masterpc16 |
» 2016-04-28 16:43:19 to jest przykładowy kod sortowania koktajlowego void Sortowanie( int tab[], int size ) { int bottom = 0, top = size - 1, ilosc_zmian( 0 ); bool replace = true; while( replace ) { replace = false; for( int i = bottom; i < top; i++ ) { if( tab[ i ] > tab[ i + 1 ] ) { swap( tab[ i ], tab[ i + 1 ] ); ilosc_zmian++; replace = true; } } top--; for( int i = top; i > bottom; i-- ) { if( tab[ i ] < tab[ i - 1 ] ) { swap( tab[ i ], tab[ i - 1 ] ); ilosc_zmian++; replace = true; } } bottom++; } cout << "Wykonano " << ilosc_zmian << " zmian" << endl; }
czyli tak :) |
|
Bardex Temat założony przez niniejszego użytkownika |
» 2016-04-28 17:15:58 Jeszcze raz, wielkie dzięki :). Przy okazji ogarnąłem jak działają te typy sortowania. Zamykam temat. |
|
« 1 » |