Sortowanie dynamicznej tablicy dwuwymiarowej
Ostatnio zmodyfikowano 2016-01-07 13:41
Matis28 Temat założony przez niniejszego użytkownika |
Sortowanie dynamicznej tablicy dwuwymiarowej » 2016-01-06 13:58:50 Cześć mam mały problem. Chciałem napisać program który posortuje tablicę dwuwymiarową ale kompletnie nie mam pomysłu jak przerobić sortowanie tablicy 1 wymiarowej na 2 wymiarową. Oto co machnąłem dla 1 wymiarowej: int * tab; int ile; cout << "ile: "; cin >> ile; tab = new int[ ile ]; for( int i = 0; i < ile; i++ ) cin >> tab[ i ];
cout << endl;
cout << "niesortowane: " << endl; for( int i = 0; i < ile; i++ ) cout << tab[ i ] << " ";
cout << endl;
for( int i = 0; i < ile; i++ ) for( int j = 0; j < ile - 1; j++ ) if( tab[ j ] > tab[ j + 1 ] ) swap( tab[ j ], tab[ j + 1 ] ); |
|
carlosmay |
» 2016-01-06 14:17:19 Chciałem napisać program który posortuje tablicę dwuwymiarową ale kompletnie nie mam pomysłu jak przerobić sortowanie tablicy 1 wymiarowej na 2 wymiarową. |
1. Sortowanie pierwszego wymiaru. (napisz funkcję zamieniającą elementy) 2. Sortowanie drugiego wymiaru, dla każdego indeksu pierwszego wymiaru. Przykład sortowania wierszy w tablicy dwuwymiarowej - bąbelkowe |
|
Matis28 Temat założony przez niniejszego użytkownika |
» 2016-01-06 15:57:51 Nie rozumiem :( |
|
carlosmay |
» 2016-01-06 16:52:39 Tablica dwuwymiarowa to tablica tablic. Aby posortować wiersz uruchamiasz sortowanie dla pierwszego indeksu, a drugi zostaje stały(aby nie zmieniać wiersza w trakcie sortowania). Natomiast dla posortowania wg wierszy należy uruchomić sortowanie dla drugiego indeksu. (napisz funkcję zamieniającą elementy) |
Funkcja std::swap() zamienia także miejscami całe tablice. Rzadko z niej korzystam i myślałem, że działa dla pojedynczych zmiennych. Przepraszam z wprowadzenie w błąd. |
|
Matis28 Temat założony przez niniejszego użytkownika |
» 2016-01-07 13:19:50 ok napisałem coś takiego i działa to nawet ładnie, sortuje mi to pięknie każdą kolumnę w tablicy ale nie wiem co dopisać aby posortowało mi teraz wiersze i doprowadziło do stanu gdzie w [0][0] będzie najmniejsza wartość a w [m][n] największa. |
|
carlosmay |
» 2016-01-07 13:41:17 Zadawaj konkretne pytania. Czy chodzi o takie coś? 1 3 5 9 7 5 4 6 8 3 6 4 9 8 1
==> 1 1 3 3 4 4 5 5 6 6 7 8 8 9 9 . Tutaj jest także przenoszenie miedzy wierszami.
Proponuje coś prostszego. Sortowanie przez wstawianie. |
|
« 1 » |