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

Sortowanie tablic dwuwymiarowych

VPS Starter Arubacloud
+1 głos
467 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 (251,170 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 (251,170 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ź 349 wizyt
pytanie zadane 31 maja 2018 w C i C++ przez zduneq Początkujący (280 p.)
0 głosów
0 odpowiedzi 170 wizyt
pytanie zadane 11 maja 2020 w C i C++ przez Łosiasty Nowicjusz (190 p.)
0 głosów
1 odpowiedź 228 wizyt
pytanie zadane 31 stycznia 2020 w C i C++ przez disi22 Początkujący (300 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...