IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Jak funguje bubblesort?

Aktivity
Avatar
Patrik Kortus:24.1.2017 17:26

Vysvětlil by mi někdo prosím řadek po řádku jak funguje tahle metoda? Děkuji moc

public void bubbleSort(Lis­t<MojeTrida> mojeTrida){
for (int i = 0; i < mojetrida.size() ; i++) {
for (int j = 0; j < mojetrida.size() - i -1; j++) {
if(mojetrida.get(j)­.hodnotaX < mojetrida.get(j+1)­.hodnotaX){
MojeTrida tmp = mojetrida.get(j);
mojetrida.set(j, mojetrida.get(j+1));
mojetrida.set(j+1, tmp);
}
}
}
}

 
Odpovědět
24.1.2017 17:26
Avatar
Nahoru Odpovědět
24.1.2017 17:30
Totalitní admini..
Avatar
Odpovídá na Patrik Kortus
Erik Šťastný:24.1.2017 17:30

Tady to máš i s videem BubbleSort

 
Nahoru Odpovědět
24.1.2017 17:30
Avatar
Jiří Hlaváček:24.1.2017 18:02

Jenom pro doplnění ta realizace v tvém kódu jede podle toho videa od Mariana - je tam ten limit zkrácení procházení v každém další průchodu cyklem o jedna, protože největší prvek je na nejvyšším indexu (ve videu).
Tvůj kód to třídí od největšího k nejmenšímu, protože přehazuje prvky, když ten s menším indexem je menší.

 
Nahoru Odpovědět
24.1.2017 18:02
Avatar
Tomáš Kubín:2.2.2017 23:52

Ahoj, asi jsi už na to přišel, popřípadě zde je krásné video, ale pokud bych to měl popsat řádek po řádku tak:
Jedná se o klasický sort.

  1. Public void BuubleSort(Pa­rametry) -> Vytváříš funkci, do které ti vstupuje List (Nějaké objekty, které chceš setřídit),
  2. for, cyklus kterým projedeš celou tvou třídu
  3. další cyklus, projedeš celou třídu bez i (horní cyklus) a bez 1 -> Toto je z důvodu že bubble sort, uzamyká prvky, jakmile jednou bubble projedeš na konci je vždy NEJVĚTŠÍ / NEJMENŠÍ prvek (záleží na IFu)

4)IF- > Zde je samotný if, ptáš se pokud předchozí hodnota je menší nežli další
5,6,7) Jednoduše prohazuješ pozice prvků

Př: na číslech vzestupně :) 2 5 1 8

2 > 5 1 8
2 5 > 1 8
2 1 5 > 8
2 > 1 5 | 8
1 2 5 8

Následně by to cyklus dojel a dokontroloval, ale to je pro ukázku zbytečné. Abych to shrnul jedeš z levé strany "probubláváš" až na konec, takže porovnáš 1 prvek s 2, pokud je menší tak prvky prohodíš a jedeš dále. :)

 
Nahoru Odpovědět
2.2.2017 23:52
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.