Sortowanie bąbelkowe
Ostatnio zmodyfikowano 2017-12-13 18:31
Anette Temat założony przez niniejszego użytkownika |
Sortowanie bąbelkowe » 2017-12-13 15:01:17 Jaki błąd jest w tym fragmencie kodu? Nie rozumiem też dlaczego skutkiem jego działania jest wyświetlenie się ilości zer równej połowie wartości liczby zdefiniowanej w SIZE. for( int i = 0; i < SIZE; i++ ) { tab[ i ] = rand() % SIZE + 0; int swap = 0; do { if( tab[ i ] > tab[ i++ ] ) { swap++; tab[ i ] = tab[ i++ ]; tab[ i++ ] = tab[ i ]; } } while( swap != 0 ); cout << tab[ i ];[ / i ] |
|
Anim |
» 2017-12-13 15:54:20 Zacznijmy od pierwszego błędu: skoro w pętli for powołujesz wartości tab[i], to w każdym obiegu pętli do{}while odwołujesz się do parametru tab[i++], w którym może być wszystko, ponieważ wartość jest niezainicjowana, tz. tab[ i ] = rand() % SIZE + 0; int swap = 0; do { if( tab[ i ] > tab[ i++ ] ) { swap++; tab[ i ] = tab[ i++ ]; tab[ i++ ] = tab[ i ]; } } while( swap != 0 );
Ja polecam przy Twoim zadaniu najpierw w jednej pętli for wypełnić tablice danymi, a następnie zacząć tworzyć algorytm sortowania bąbelkowego, który składa się z dwóch pętli for :) |
|
Anette Temat założony przez niniejszego użytkownika |
» 2017-12-13 18:31:31 Faktycznie, ale dlaczego w efekcie wypisywana jest ilość elementów równa połowie faktycznego SIZE? |
|
« 1 » |