Řazení bublin

Algoritmus třídění bublin vyžaduje dvojici vnořených smyček. Vnější smyčka musí jednou iterovat pro každý prvek v datové sadě (o velikosti n), zatímco vnitřní smyčka iteruje n-krát při prvním zadání, n-1-krát druhý a tak dále. Zvažte účel každé smyčky. Jak je vysvětleno výše, třídění bublin je strukturováno tak, že při každém průchodu seznamem se další největší prvek dat přesune na správné místo. Proto, aby se všech n prvků dostalo na správná místa, musí být vnější smyčka provedena nkrát.

Vnitřní smyčka se provádí při každé iteraci vnější smyčky. Jeho účelem je umístit další největší prvek, který se zavádí na místo. Vnitřní smyčka proto provádí srovnání a výměnu sousedních prvků. Abychom určili složitost této smyčky, vypočítáme počet srovnání, která je třeba provést. Při první iteraci vnější smyčky musí být při pokusu o umístění největšího prvku provedeno srovnání n – 1: provede se první srovnání mezi prvním a druhým prvkem, druhé se provede mezi druhým a třetím prvkem a tak dále, dokud není provedeno n-1. srovnání mezi n-1 a n -ým prvkem. Na druhé iteraci vnější smyčky není třeba porovnávat s posledním prvkem seznamu, protože při předchozím průchodu byl vložen na správné místo. Druhá iterace proto vyžaduje pouze srovnání n-2. Tento vzor pokračuje až do předposlední iterace vnější smyčky, když jsou pouze první dva prvky seznamu netříděné; jasně v tomto případě je nutné pouze jedno srovnání. Celkový počet srovnání je tedy (n – 1) + (n – 2) … (2) + (1) = n (n – 1) / 2 nebo O (n2).

Nejlepším případem třídění bublin je situace, kdy je seznam již seřazený nebo téměř seřazený. V případě, že je seznam již seřazen, bude třídění bublin ukončeno po první iteraci, protože nebyly provedeny žádné swapy. Kdykoli se provede procházení seznamem a neprovedou se žádné swapy, je jisté, že je seznam seřazen. Třídění bublin je také efektivní, když je třeba třídit jeden náhodný prvek do seřazeného seznamu, za předpokladu, že nový prvek je umístěn na začátku a ne na konci. Když je umístěn na začátku, jednoduše vybuchne na správné místo a druhá iterace v seznamu vygeneruje 0 swapů a ukončení třídění. Připomeňme, že pokud je náhodný prvek umístěn na konci, třídění bublin ztrácí svou účinnost, protože každý prvek větší, než musí, bublinovat až nahoru.

Absolutně nejhorší případ pro třídění bublin je, když nejmenší prvek seznamu je na širším konci. Protože v každé iteraci bude na své správné místo vložen pouze největší netříděný prvek, když je nejmenší prvek na konci, bude muset být pokaždé zaměněn v seznamu a nedostane se na přední část seznamu, dokud nebudou všechny n došlo k iteracím. V tomto nejhorším případě trvá n iterací swapů n / 2, takže pořadí je opět n2.

Nejlepší případ: nAverage Případ: n2 Nejhorší případ: n2

Leave a Reply

Napsat komentář

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