Jistě, rád vám popíšu základní kroky algoritmu Bubble Sort (česky také bublinkové řazení). Je to jeden z nejjednodušších řadicích algoritmů, i když nepatří mezi ty nejefektivnější pro velké seznamy.
Představte si, že máte seznam čísel, která chcete seřadit od nejmenšího po největší. Bubble Sort to dělá tak, že opakovaně prochází seznamem, porovnává sousední prvky a prohazuje je, pokud jsou ve špatném pořadí.
Zde jsou základní kroky:
- Začněte na začátku seznamu: Vezměte první dva prvky seznamu.
- Porovnejte sousední prvky:
- Pokud je první prvek větší než druhý prvek (a chcete řadit vzestupně), prohoďte je.
- Pokud jsou ve správném pořadí (první menší nebo roven druhému), nedělejte nic.
- Posuňte se o jeden prvek dál: Nyní porovnejte druhý a třetí prvek stejným způsobem. Pokračujte takto až do konce seznamu. Po prvním průchodu se největší prvek "probublá" na konec seznamu, na své správné místo.
- Opakujte průchody: Celý proces (kroky 1-3) opakujte pro zbývající nesetříděnou část seznamu. Při každém dalším průchodu už nemusíte kontrolovat prvky, které jsou již na svých finálních pozicích (tedy ty na konci seznamu, které tam "probublaly" v předchozích průchodech).
- Například po prvním průchodu je poslední prvek na svém místě.
- Po druhém průchodu jsou poslední dva prvky na svých místech, atd.
- Konec řazení: Algoritmus končí, když během celého jednoho průchodu seznamem nedojde k žádnému prohození prvků. To znamená, že seznam je již seřazený.
Příklad (řazení vzestupně):
Mějme seznam: [5, 1, 4, 2, 8]
První průchod:
* Porovnáme 5 a 1: 5 > 1, prohodíme -> [1, 5, 4, 2, 8]
* Porovnáme 5 a 4: 5 > 4, prohodíme -> [1, 4, 5, 2, 8]
* Porovnáme 5 a 2: 5 > 2, prohodíme -> [1, 4, 2, 5, 8]
* Porovnáme 5 a 8: 5 < 8, nic neděláme -> [1, 4, 2, 5, 8]
* Po prvním průchodu je největší prvek (8) na konci.
Druhý průchod (už nebereme v úvahu poslední prvek):
* Porovnáme 1 a 4: 1 < 4, nic neděláme -> [1, 4, 2, 5, 8]
* Porovnáme 4 a 2: 4 > 2, prohodíme -> [1, 2, 4, 5, 8]
* Porovnáme 4 a 5: 4 < 5, nic neděláme -> [1, 2, 4, 5, 8]
* Po druhém průchodu jsou poslední dva prvky (5, 8) na svých místech.
Třetí průchod (nebereme v úvahu poslední dva prvky):
* Porovnáme 1 a 2: 1 < 2, nic neděláme -> [1, 2, 4, 5, 8]
* Porovnáme 2 a 4: 2 < 4, nic neděláme -> [1, 2, 4, 5, 8]
* Během tohoto průchodu nedošlo k žádné výměně (pokud bychom pokračovali až do konce nesetříděné části). V tuto chvíli by optimalizovaný algoritmus mohl skončit, protože seznam je již seřazený. Pokud by nebyl optimalizovaný, pokračoval by.
Čtvrtý průchod (nebereme v úvahu poslední tři prvky):
* Porovnáme 1 a 2: 1 < 2, nic neděláme -> [1, 2, 4, 5, 8]
* Žádná výměna.
Seznam je nyní seřazený: [1, 2, 4, 5, 8]
Název "Bubble Sort" pochází z toho, jak menší (nebo větší, záleží na směru řazení) prvky postupně "probublávají" na začátek (nebo konec) seznamu, podobně jako bublinky ve vodě stoupají nahoru.
Doufám, že je to srozumitelné! Kdybyste měl jakékoli další otázky, klidně se ptejte.