Algoritmus třídění bublin

Řazení bublin je jednoduchý algoritmus, který se používá k třídění dané sady n prvky poskytované ve formě pole s n počtem prvků. Bubble Sort porovnává všechny prvky jeden po druhém a třídí je na základě jejich hodnot.

Pokud má být dané pole seřazeno vzestupně, potom bublinové třídění začne porovnáním prvního prvku pole s druhý prvek, pokud je první prvek větší než druhý prvek, vymění oba prvky a poté přejde k porovnání druhého a třetího prvku atd.

Pokud máme celkem n prvků, pak musíme tento proces opakovat n-1 krát.

Je známý jako bublinové třídění, protože s každou úplnou iterací největší prvek v daném poli bubliny nahoru na poslední místo nebo nejvyšší index, stejně jako vodní bublina stoupá až k vodní hladině.

Třídění probíhá procházením všech prvky jeden po druhém a porovnat je se sousedním prvkem a podle potřeby je vyměnit.

POZNÁMKA: Pokud nejste obeznámeni s tříděním v datové struktuře, měli byste fi Nejprve se naučte, co je třídění, abyste věděli o základech třídění.

Implementace algoritmu třídění bublin

Následuje postup při třídění bublin (pro třídění daného pole ve vzestupném pořadí):

  1. Počínaje prvním prvkem (index = 0) porovnejte aktuální prvek s dalším prvkem pole.
  2. Pokud je aktuální prvek větší než další prvek pole, vyměňte je.
  3. Pokud je aktuální prvek menší než následující prvek, přejděte na další prvek. Opakujte krok 1.

Pojďme zvážit pole s hodnotami {5, 1, 6, 2, 4, 3}

Níže máme obrazová reprezentace toho, jak bude třídění bublin třídit dané pole.

Jak tedy vidíme na vyobrazení výše, po první iterace, 6 se umístí na poslední index, který je pro ni správnou pozicí.

Podobně po druhé iteraci se 5 bude na druhém posledním indexu atd.

Čas na napsání kódu pro třídění bublin:

Ačkoli výše uvedená logika roztřídí netříděné pole, výše uvedený algoritmus není efektivní, protože podle výše uvedené logiky je vnější for bude pokračovat v provádění 6 iterací, i když se pole po druhé iteraci roztřídí.

Takže můžeme jasně optimalizovat náš algoritmus.

Optimalizovaný algoritmus třídění bublin

Optimalizovat naši bublinu Díky algoritmu třídění můžeme zavést flag ke sledování, zda se prvky vyměňují uvnitř vnitřní for smyčky.

Proto ve vnitřní for smyčce vždy kontrolujeme, zda dochází k záměně prvků.

Pokud pro konkrétní iteraci žádné záměny nebývají místo, to znamená, že pole bylo tříděno a my můžeme vyskočit ze smyčky for místo provádění všech iterací.

Pojďme uvažovat o poli s hodnotami {11, 17, 18, 26, 23}

Níže máme obrázkové znázornění toho, jak bude optimalizované třídění bublin třídit dané pole.

Jak vidíme, v první iteraci proběhla výměna, proto jsme aktualizovali naši flag hodnotu na 1 ve výsledku spuštění znovu vstoupí do smyčky for. Ale ve druhé iteraci nedojde k žádné výměně, proto hodnota flag zůstane 0 a provedení se vymyká smyčce.

Ve výše uvedeném kódu ve funkci bubbleSort, pokud pro jediný kompletní cyklus j iterace (vnitřní for smyčka), nedojde k žádné výměně, pak flag zůstane 0 a poté se vymaníme ze smyček for, protože pole již bylo tříděno.

Analýza složitosti třídění podle bublin

V třídění podle bublin bude n-1 srovnání provedeno v 1. průchodu, n-2 ve 2. průchodu, n-3 ve 3. průchodu atd. Celkový počet srovnání tedy bude,

(n-1) + (n-2) + (n-3) + ….. + 3 + 2 + 1 Sum = n (n- 1) /2i.e O (n2)

Proto je časová složitost Bubble Sort O (n2).

Hlavní výhodou Bubble Sort je jednoduchost algoritmu.

Složitost prostoru pro Bubble Sort je O (1), protože je vyžadován pouze jeden další paměťový prostor, tj. pro proměnnou temp.

Nejlepší časová složitost bude také O (n), tedy když je seznam již seřazen.

Následují časová a prostorová složitost algoritmu Bubble Sort.

Nyní, když jsme se naučili algoritmus třídění bublin, můžete vyzkoušet i tyto třídicí algoritmy a jejich aplikace:

  • Třídění podle vložení
  • Výběr podle řazení
  • Rychlé řazení
  • sloučit řazení
  • Hromadné řazení
  • Počítání řazení

Write a Comment

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *