Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – Bubblesort

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Petr
Nevyplnené
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.

Editované
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovedá 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--;
  }
}
Odpovedať
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.

Odpovedať
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. júna 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;
            }

        }
    }
Odpovedať
:D :D :D
Avatar
Yveta Kršková:18. júna 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.

Odpovedať
:D :D :D
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 11.