POUZE NYNÍ: Získej až 80 % extra kreditů ZDARMA na náš interaktivní e-learning. Zjistit více.
NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Diskuze – Lekce 2 - Bubblesort

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Nejnovější komentáře jsou na konci poslední stránky.
Avatar
Petr
Neregistrovaný
Avatar
Petr:27.1.2012 0:18

Díky 8-)

Avatar
olaznik
Člen
Avatar
olaznik:9.12.2014 12:47

Prosímtě v tom druhém řádku, jak je ( int j = list.length - 2 ) proč tam odečítáš 2 ?? díky za odpověd. Měj se.

Editováno
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na olaznik
Jan Vargovský:9.12.2014 14:30

Klasicky jede cyklus od i do < length, ale on použil <= proto tam musí být length - 1 a protože porovnává aktuální prvek a ten za ním, tak tam musí být length - 2;

Avatar
Jozef
Člen
Avatar
Jozef:21.3.2015 0:00

C

void bubbleSort(int list[],int size) {
  // kontrola prohozeni
  int swapped = 1,temp;
  while (swapped) {
    swapped = 0;
    for (int i = 0; i < size; i++) {
      // prohozeni
      if (list[i] > list[i + 1]) {
        temp = list[i];
        list[i] = list[i + 1];
        list[i + 1] = temp;
        swapped = 1;
      }
    }
    size--;
  }
}
Odpovědět
I'm not afraid to die on a treadmill
Avatar
Martin
Člen
Avatar
Martin:24.11.2016 17:39

Vyzeral by ShakerSort (v jave) nejak takto alebo je tam ešte možné zlepšenie ?

public static void ShakerSort(int[]list){
        int j = list.length-2;
        int temp;
        boolean swapped = true;
        while(swapped)
        {
            swapped = false;
            for(int i = 0;i<=j;i++)
            {
                if(list[i]>list[i+1])
                {
                    temp     = list[i];
                    list[i]  = list[i+1];
                    list[i+1]= temp;
                    swapped = true;
                }

             }
            for(int i = j; i>0;i--)
            {
                if(list[i]<list[i-1])
                {
                    temp     = list[i];
                    list[i]  = list[i-1];
                    list[i-1]= temp;
                    swapped = true;
                }
            }
            j--;
        }
    }
Avatar
Neaktivní uživatel:10.1.2017 18:05

Optimalizovaný bubble sort pre PHP:

function bubbleDesc($input) {

    $arrayLength = sizeof($input) - 1;

    $i = 0;
    while($i < $arrayLength) {

        $count = $arrayLength - $i;
        $j = 0;
        while($j < $count) {

            if($input[$j + 1] > $input[$j]) {
                $val = $input[$j + 1];
                $input[$j + 1] = $input[$j];
                $input[$j] = $val;
            }

            ++$j;

        }

        ++$i;

    }

    return $input;

}

Pre opačné usporiadanie stači otočiť podmienku.

Odpovědět
Neaktivní uživatelský účet
Avatar
Pavel Šůstek:9.5.2017 18:36

Ahoj ,prošel jsem Fortranem ,Basicem ,Pascalem ,Delphi(to už bylo všechno dávno) a nyní je poptávka po C-éčkařích ,tak to zkouším ,že bych se zkusil zapojit .

Avatar
marek popl
Člen
Avatar
marek popl:12.9.2018 16:56

Optimalizovaný bubble sort pro python:

def bubbleSort(arr):
    n = len(arr)


    for i in range(n):


        for j in range(0, n-i-1):


            if arr[j] > arr[j+1] :
                arr[j], arr[j+1] = arr[j+1], arr[j]


arr = [64, 34, 25, 12, 22, 11, 90]

bubbleSort(arr)

print ("Seřazení pole je:")
for i in range(len(arr)):
    print ("%d" %arr[i]),
Avatar
Yveta Kršková:18. června 21:26

No to nepůjde, kdyby od spodku probublávalo nějaké číslo výše a ty budeš pořád snižovat "j", tak to myslím neprobublá až vzhůru. Já bych to viděla třeba spíš takto (pro JS):

/*bubble sort- je když se postupně prohazují lehčí a těžší prvky vedle sebe
    jako v přírodě (stoupající bublinky)*/
    for (let j = 0; j < delkaRady; j++) {
        for (let i = 1; i < delkaRady; i++) {
            if ((radaCisel[i-1]) < radaCisel[i]) {
                console.log("přehazuji");
                cisloVRuce = radaCisel[i - 1];
                radaCisel[i - 1] = radaCisel[i];
                radaCisel[i] = cisloVRuce;
            }

        }
    }
Odpovědět
:D :D :D
Avatar
Yveta Kršková:18. června 21:30

"console.log()" mi vypsal, kolikrát došlo k prohození. Cykly můžou samozřejmě dojet naprázdno, ale to, že dojedou, pořád jistí situaci, kdy je nejnižší nebo nejvyšší prvek až na druhém konci řady a musí "přeskákat" postupně až na protější stranu.

Odpovědět
:D :D :D
Nejnovější komentáře jsou na konci poslední stránky.
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 10 zpráv z 11.