Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Sortowanie tablicy dwuwymiarowej

Ostatnio zmodyfikowano 2017-06-23 22:57
Autor Wiadomość
Hacper
Temat założony przez niniejszego użytkownika
Sortowanie tablicy dwuwymiarowej
» 2017-06-23 17:56:54
Witam, mam za zadanie posortować tablice dwuwymiarową w taki sposób, że pierwszy element jest ważniejszy, a jeśli są takie same gdzieś to wtedy decyduje drugi element. Tablica int'ów. Podam przykład:

Tablica:
13 1
3 2
13 2

Po posortowaniu powinno być:
3 2
13 1
13 2

Do normalnego sortowania używałem zwykle sort() z biblioteki algorithm. Teraz nie dzieła.
P-162784
mokrowski
» 2017-06-23 22:57:53
C/C++
#include <iostream>

int main() {
    int table[][ 2 ] = {
        { 13, 1 },
        { 3, 2 },
        { 13, 2 }
    };
   
    std::qsort( table, sizeof( table ) / sizeof( * table ), sizeof( * table ),
    []( const void * tab1, const void * tab2 ) {
        const int * t1 = static_cast < const int *>( tab1 );
        const int * t2 = static_cast < const int *>( tab2 );
        return( t1[ 0 ] < t2[ 0 ] ) ? - 1
            :(( t2[ 0 ] < t1[ 0 ] ) ? 1
            :( t1[ 1 ] < t2[ 1 ] ? - 1
            :(( t2[ 1 ] < t1[ 1 ] ? 1
            : 0 ) ) ) );
    } );
   
    for( const auto & tab: table ) {
        for( const auto & val: tab ) {
            std::cout << val << " ";
        }
        std::putchar( '\n' );
    }
}

https://wandbox.org/permlink/qVvAfncfEC9MYZ11
P-162793
« 1 »
  Strona 1 z 1