Sortowanie przez zliczanie tablicy dwuwymiarowej
Ostatnio zmodyfikowano 2017-04-04 15:10
WilkZKlatki Temat założony przez niniejszego użytkownika |
Sortowanie przez zliczanie tablicy dwuwymiarowej » 2017-04-03 17:19:40 Cześć mam problem, chcę stabilnie posortować tablicę dwuwymiarową przez zliczanie, ale wywala mi wyjątek. Nie mogę niestety dojrzeć w czym tkwi problem. Mój kod: void sort_with_show( int ** a, int ** b, int rozmiar, int polecenie ) { int max = a[ 0 ][ 0 ]; for( int i = 0; i < rozmiar; i++ ) { if( a[ i ][ 0 ] > max ) max = a[ i ][ 0 ]; } int * counts = new int[ max + 1 ]; for( int i = 0; i < rozmiar; i++ ) { counts[ a[ i ][ 0 ] ] ++; } for( int i = 1; i < max + 1; i++ ) { counts[ i ] += counts[ i - 1 ]; } for( int i = rozmiar - 1; i >= 0; i-- ) { counts[ a[ i ][ 0 ] ] --; for( int j = 0; j < 2; j++ ) { b[ counts[ a[ i ][ 0 ] ] ][ j ] = a[ i ][ j ]; } } for( int i = 0; i < rozmiar; i++ ) { if( polecenie == 0 ) { cout << b[ i ][ 0 ] << '\n'; } else if( polecenie == 1 ) { cout << b[ i ][ 0 ] << "," << b[ i ][ 1 ] << "\n"; } } }
|
|
mateczek |
» 2017-04-04 05:07:10 |
|
Wiesiek |
» 2017-04-04 15:10:53 Tablica counts nie została zainicjalizowana wartością 0.
Odwołanie b[ counts[ a[ i ][ 0 ] ] ][ j ] jeżeli nie ma specjalnych ograniczeń na wartości tablicy a, to a[ i ][ 0 ] jako indeks tablicy b może wyrzucić poza tablicę b Nie jestem pewien wypełniania tablicy b, ale nie chce mi się zbyt dużo myśleć - nie będę wnikał.
{muszę poszukać, gdzie są zapisane zasady tworzenia wiadomości :) } |
|
« 1 » |