Sortowanie przez zliczanie
Ostatnio zmodyfikowano 2016-02-03 22:19
LeajD Temat założony przez niniejszego użytkownika |
» 2016-02-03 20:58:52 for( int j = P[ i ]; i >= 1; j-- ) { T[ k ] = i; k++; // tu jest k :D } |
|
carlosmay |
» 2016-02-03 21:37:49 Ok, a co z tym "k" i o co chodzi w ostatniej pętli w której sie to k zwiększa? |
To 'k' jest po to aby iterować po tablicy. Można też tak: int k; for( int i = 0; i < m; ++i ) for( int j = P[ i ], k = 0; i >= 1; --j, ++k ) { T[ k ] = i; } |
|
hit |
» 2016-02-03 21:49:04 Generalnie zmieniasz ten kod, nie przepisałeś go od razu w całości, więc ciężko jest Ci pomóc. Wklejaj go na bieżąco zamiast modyfikować pierwszy post. Co do zmiennej 'm' to mogę się tylko domyślać, czy to miał być właśnie rozmiar maksymalny tablicy - to Ty masz to opisane w książce. Zmienna 'k' w takim wykorzystaniu nie jest potrzebna, bo równie dobrze można się posłużyć zmienną 'i' |
|
mateczek |
» 2016-02-03 22:19:05 for( int i = 0; i < m; i++ ) Na pocz ą tku sprawdzasz liczb ę zero for( int j = P[ i ]; i >= 1; j-- ) { T[ k ] = i; k++; }
jeszcze w jednym miejscu źle przepisałeś !!! masz cały kod #include <iostream>
using namespace std; int main() { const int rozmiar = 10; int T[ rozmiar ] { 1, 3, 1, 3, 3, 3, 2, 4, 2, 4 }; int P[ 4 + 1 ] { 0 }; for( int i = 0; i < rozmiar; i++ ) P[ T[ i ] ] ++; cout << "jedynka wysapila " << P[ 1 ] << "razy" << endl; cout << "dwojka wysapila " << P[ 2 ] << "razy" << endl; cout << "trojka wysapila " << P[ 3 ] << "razy" << endl; cout << "czworka wysapila " << P[ 4 ] << "razy" << endl; int k = 0; for( int i = 0; i <= 4; i++ ) for( int j = P[ i ]; j >= 1; j-- ) { T[ k ] = i; k++; } for( int i = 0; i < rozmiar; i++ ) cout << T[ i ] << " "; cout << endl; }
|
|
1 « 2 » |