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

Nie rozumiem dokładnie działania kodu, który dotyczy sortowania

0 głosów
609 wizyt
pytanie zadane 3 grudnia 2020 w C i C++ przez Uczeń123 Nowicjusz (170 p.)

Hejka!  Nie wiem, czy to nie podchodzi pod tego "gotowca", to chyba moje 3 pytanie na forum, jeśli przesadziłem to przepraszam :/. Mam tutaj taki kod, którego działania nie jestem w stanie do końca pojąć. Jest w nim fragment, którego zwyczajnie nie jestem w stanie sobie zwizualizować. Oto kod:

#include <iostream>
#include <ctime>

using namespace std;

int main()
{
    srand(time(NULL));

    int t[30];
    for (int i=0;i<30;i++)
    t[i]=rand()%301;
    cout << "Tablica przed sortowaniem:  "<<endl;
    for (int i=0;i<30;i++)
    cout<<t[i]<<"  ";
    cout<<endl;

    for (int i=0;i<30;i++)
    {
        int x=i; //odtąd zaczynają się rzeczy, których nie pojmuję w pełni
        for (int y=i;y<30;y++)  
        {
            if(t[y]<t[x])
            x=y;
        }
        swap(t[x],t[i]); //a tutaj się kończą ^-^
    }
cout<<endl;
cout<<"Tablica po sortowaniu rosnaco:"<<endl;
    for (int n=0;n<30;n++)
cout<<t[n]<<"  ";

cout<<endl;

    return 0;
}

Szczerze to pogubiłem się w pętlach i robiłem aż uzyskałem efekt metodą prób i błędów. Tyle że fajnie byłoby też rozumieć co się napisało. Nie wiem, chyba nie mogę załapać o co chodzi w tym wypadku, gdy jedna zmienna równa się drugiej zmiennej, a nie 0 albo 1 hahah (zamieniają się po całości? Taki był zamysł, ale nie wiem, czy to nie jakiś cheat wskoczył).  Proszę o rozjaśnienie mi sytuacji, będę bardzo wdzięczny. Z góry dziękuję i pozdrawiam ^-^

1 odpowiedź

+1 głos
odpowiedź 3 grudnia 2020 przez wojtek_suchy Mądrala (6,880 p.)
wybrane 3 grudnia 2020 przez Uczeń123
 
Najlepsza

To co napisałeś to przekombinowany Bubble Sort

Wystarczy że wpiszesz tą frazę w Google i masz pełno poradników, filmów, implementacji w różnych językach tej techniki sortowania.

komentarz 3 grudnia 2020 przez Uczeń123 Nowicjusz (170 p.)
Tak nawiasem mówiąc to wiem, że to Bubble Sort. Pragnę wiedzieć gdzie dokładnie został przekombinowany i w jaki sposób, bo może dobrze myślę (w co wątpię), a chciałbym być pewien. W tym co znalazłem w internecie są metody, które odrobinkę różnią się od tego i nie mogę rozwiać moich niepewności z samych poradników. Potrzebuję, żeby ktoś doświadczony rzucił na to okiem opisał nawet z grubsza, co dzieje się we fragmencie, w którym mam problem. Dlatego napisałem na forum, wcześniej próbowałem działać na własną rękę i w sumie nadal działam.
1
komentarz 3 grudnia 2020 przez wojtek_suchy Mądrala (6,880 p.)

Został przekombinowany tutaj:

    for (int i=0;i<30;i++)
    {
        int x=i; //odtąd zaczynają się rzeczy, których nie pojmuję w pełni
        for (int y=i;y<30;y++)  
        {
            if(t[y]<t[x])
            x=y;
        }
        swap(t[x],t[i]); //a tutaj się kończą ^-^
    }

zamiast tego wystarczy:

    for (int i = 0; i < 30; i++){
        for (int j = i; j < 30; j++){
            if (t[i] > t[j])
                swap(t[i], t[j]);
        }
    }

idziesz przez tablice 30razy, za każdym razem znajdujesz element który powinien znajdować się w tym miejscu tablicy, użyj degubbera żeby to sobie lepiej zobrazować lub wypisuj przy każdej iteracji jak wygląda tablica

komentarz 3 grudnia 2020 przez Uczeń123 Nowicjusz (170 p.)
Dziękuję serdecznie! Myślę, że teraz lepiej to rozumiem.

Podobne pytania

0 głosów
1 odpowiedź 225 wizyt
pytanie zadane 7 czerwca 2017 w C i C++ przez pimpek Użytkownik (680 p.)
0 głosów
2 odpowiedzi 2,805 wizyt
pytanie zadane 25 października 2019 w C i C++ przez j4nsk Nowicjusz (160 p.)
+1 głos
4 odpowiedzi 655 wizyt
pytanie zadane 4 stycznia 2022 w C# przez niezalogowany

93,733 zapytań

142,669 odpowiedzi

323,287 komentarzy

63,295 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...