• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sortowanie tablic dwuwymiarowych

Object Storage Arubacloud
+1 głos
491 wizyt
pytanie zadane 24 stycznia 2021 w C i C++ przez Nie Wiem Nowicjusz (240 p.)
Tak jak w tytule mam problem z sortowaniem tablic dwuwymiarowych, konkretnie trójek tylko po pierwszej kolumnie, np: 1 2 4 , 8 3 2 , 4 2 1 ,  2 5 7  na  1 2 4 , 2 5 7 , 4 2 1 , 8 3 2.

Nie mam pojęcia jak to napisać. Piszę w dev 5.11 (mówię o tym, ponieważ jeden z kodów, który widziałem nie był zgodny z moim kompilatorem.

Rozumiem, że gotowcy tu nie dajecie, więc proszę chociaż o drobną podpowiedź
komentarz 24 stycznia 2021 przez tkz Nałogowiec (42,000 p.)
Jaka złożoność Cię interesuje? Najprościej będzie napisać to przy pomocy sortowania bąbelkowego.
komentarz 24 stycznia 2021 przez Nie Wiem Nowicjusz (240 p.)
liniowa od n tz ilości trójek
komentarz 24 stycznia 2021 przez tkz Nałogowiec (42,000 p.)
Żadne sortowanie nie jest O(n), co najwyżej możesz osiągnąć ograniczenie dolne liniowe, co daje sortowanie bąbelkowe miedzy innymi,
komentarz 24 stycznia 2021 przez Nie Wiem Nowicjusz (240 p.)
mam na myśli, że O(n) to max na jaki mogę sobie pozwolić
komentarz 24 stycznia 2021 przez tkz Nałogowiec (42,000 p.)
Jakie sortowanie według Ciebie ma złożoność O(n)? Ogólnie, nie związane z Twoim problemem.
komentarz 24 stycznia 2021 przez Nie Wiem Nowicjusz (240 p.)
chyba nie zrozumiałeś, nie znam sortowania O(n) - prawda, ale nie wiedząc jakie sortowania mają złożoności po prostu podałem najwyższą złożoność, która będzie dobra
komentarz 24 stycznia 2021 przez tkz Nałogowiec (42,000 p.)
O(n) to dobra złożoność przy sortowaniu. Nie ma sortowania, bynajmniej ja nie znam takiego, które ma O(n), omega(n) tak. Skorzystaj z bąbelkowego po prostu. Chyba, że juz masz rozwiązanie.
komentarz 24 stycznia 2021 przez tkz Nałogowiec (42,000 p.)
komentarz 24 stycznia 2021 przez Nie Wiem Nowicjusz (240 p.)
sortowanie przez scalanie wydaje mi się w miarę dobrym rozwiązaniem

2 odpowiedzi

0 głosów
odpowiedź 25 stycznia 2021 przez VBService Ekspert (253,340 p.)
wybrane 25 stycznia 2021 przez Nie Wiem
 
Najlepsza

Sprawdź to: How to sort multidimensional array by column in C++?
szczególnie ten przykład. Przerobiłem go "trochę" wink, żeby dopasować do:

konkretnie trójek tylko po pierwszej kolumnie, np:
       1 2 4 , 8 3 2 , 4 2 1 ,  2 5 7  
na  1 2 4 , 2 5 7 , 4 2 1 , 8 3 2.

#include <iostream>
#include <array>
#include <algorithm>
#include <iterator>

int main()
{
    std::array<int, 3> data[] =
    {
        { { 1, 2, 4 } },
        { { 8, 3, 2 } },
        { { 4, 2, 1 } },
        { { 2, 5, 7 } }
    };

    for ( const auto &row : data )
    {
        for ( const auto &s : row ) {
            std::cout.width(2);
            std::cout << s << ' ';
        }
        std::cout << std::endl;
    }

    std::cout << std::endl;

    std::sort( std::begin( data ), std::end( data ),
               []( const auto &a, const auto &b )
               {
                   return a[0] < b[0];
               } );

    for ( const auto &row : data )
    {
        for ( const auto &s : row ) {
            std::cout.width(2);
            std::cout << s << ' ';
        }
        std::cout << std::endl;
    }
}

komentarz 25 stycznia 2021 przez Nie Wiem Nowicjusz (240 p.)
i od 27-31 jest całe sortowanie?
komentarz 25 stycznia 2021 przez tkz Nałogowiec (42,000 p.)
Tak.
komentarz 25 stycznia 2021 przez VBService Ekspert (253,340 p.)

Tak. wink

Sortowanie według pierwszej kolumny

return a[0] < b[0];

Sortowanie według drugiej kolumny

return a[1] < b[1];

 

komentarz 25 stycznia 2021 przez Nie Wiem Nowicjusz (240 p.)
dzieki
komentarz 25 stycznia 2021 przez Nie Wiem Nowicjusz (240 p.)

Wiecie może gdzie jest ta opcja?

0 głosów
odpowiedź 24 stycznia 2021 przez Kabuuz Bywalec (2,820 p.)
Od zwykłego sortowania różni się to tylko tym, że zamiast zamieniać miejscami 2 elementy zamieniasz 2 tablice. Zakładam że tablica jest nx3 wymiarowa, czyli sortujesz po [i][0] (pierwszej kolumnie)
komentarz 24 stycznia 2021 przez Nie Wiem Nowicjusz (240 p.)
Hmm jak ma dokładnie wyglądać te zamienianie tablic? Pytanie może głupie ale zawsze korzystałem z funkcji sort()
komentarz 24 stycznia 2021 przez Kabuuz Bywalec (2,820 p.)

Najprościej to tak jak dla zamiany 2 zmiennych. Potrzebna jest trzecia pomocnicza.

int zmienna1, zmienna2, pomocnicza;
pomocnicza=zmienna1;
zmienna1=zmienna2;
zmienna2=pomocnicza;

Tylko potrzebujesz tablic i kopiować każdy element do wybranej tablicy

komentarz 24 stycznia 2021 przez Nie Wiem Nowicjusz (240 p.)
dzięki, popróbuję

Podobne pytania

0 głosów
1 odpowiedź 363 wizyt
pytanie zadane 31 maja 2018 w C i C++ przez zduneq Początkujący (280 p.)
0 głosów
0 odpowiedzi 185 wizyt
pytanie zadane 11 maja 2020 w C i C++ przez Łosiasty Nowicjusz (190 p.)
0 głosów
1 odpowiedź 234 wizyt
pytanie zadane 31 stycznia 2020 w C i C++ przez disi22 Początkujący (300 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...