Informatika je o pochopení složitosti algoritmů a datových struktur.
Máte seznam položek, které je třeba seřadit, ale nemáte čas ani prostředky na použití složitějšího třídícího algoritmu.
Řazení vkládání je jedním z nejjednodušších třídicích algoritmů, ale u velkých seznamů může být pomalé.
Díky snadné implementaci a pochopení se tato metoda stala oblíbenou mezi programátory. Je ideální pro malé seznamy nebo když potřebujete rychlé řešení.
V tomto blogovém příspěvku se podíváme na časovou náročnost řazení vložení. Tento algoritmus se používá k řazení polí a má běhové prostředí O(n2). To znamená, že s velikostí pole roste časová složitost.
Tento algoritmus však může být často rychlejší než jiné třídicí algoritmy, jako je quicksort.
Pojďme se blíže podívat na to, jak funguje třídění vkládání!
Co je algoritmus řazení vložení?
Vkládání jednotlivých prvků generuje tříditelné pole, které se často nazývá seznam.
Třídění se například používá ve složitých počítačových programech, jako jsou kompilátory, kde je pořadí tokenů důležité pro interpretaci programu.
Jak funguje řazení vložení?
Když k řazení pole použijeme řazení vložením, algoritmus začíná nalezením nejmenší položky v seznamu a jejím vložením na správnou pozici.
Poté najde další nejmenší položku a vloží ji na správnou pozici a tak dále.
Algoritmus funguje tak, že prochází seznamem a porovnává každou položku s tou, která je před ní.
Pokud jsou položky ve špatném pořadí, algoritmus je zamění. Poté zkontroluje, zda je seznam seřazen, a pokud ano, algoritmus skončí.
V praxi je řazení vložení často implementováno pomocí několika řádků kódu, což z něj činí oblíbenou volbu pro třídění malých polí. Při použití tohoto algoritmu je však třeba vzít v úvahu časovou složitost.
Příklad:
Zde je příklad toho, jak funguje řazení vložení. Použijeme následující pole:
1, 2, 3, 4, 5, 6
Algoritmus začíná nalezením nejmenší položky v seznamu, což je 1. Poté ji vloží na správnou pozici, na první pozici. Poté najde další nejmenší položku, což je 2. Vloží ji na správnou pozici, což je druhá pozice.
Poté najde další nejmenší položku, což je 3. Vloží ji na správnou pozici, což je třetí pozice.
Poté najde další nejmenší položku, což je 4. Vloží ji na správnou pozici, což je čtvrtá pozice a tak dále. Seznam je nyní seřazen!
Z příkladu vidíme, že algoritmus setřídí seznam šesti porovnáními a záměnami. To proto, že to trvá n2 porovnání a swapy pro setřídění seznamu n položek. V tomto případě n=6.
Jak zlepšit časovou složitost řazení vložení?
Zatímco řazení vložení má dobu běhu O(n2), lze jej vylepšit použitím lepšího třídícího algoritmu, jako je quicksort.
Quicksort má běhové prostředí O(n log n), které je mnohem rychlejší než O(n2).
V některých případech však může být řazení vložení rychlejší než rychlé třídění.
Pokud je například seznam již v pořádku, řazení vložení zabere méně času než rychlé třídění.
V praxi je řazení vložení často implementováno pomocí několika řádků kódu, což z něj činí oblíbenou volbu pro třídění malých polí.
Při použití tohoto algoritmu je však třeba vzít v úvahu časovou složitost.
Časová složitost
Složitost nejhoršího případu O(č2):
Časová složitost se zvyšuje s velikostí pole. To trvá n2 porovnání a swapy pro setřídění seznamu n položek.
Například, pokud máme pole o velikosti 1000, algoritmus provede 1,000,000 XNUMX XNUMX porovnání a záměn, aby pole seřadil.
Složitost nejlepšího případu O(n):
Časová složitost je stejná jako velikost vstupního pole. já
t vyžaduje n porovnání a záměn k seřazení seznamu n položek. Uvažujme například pole o velikosti 5. Algoritmus provede pět porovnání a záměny, aby pole seřadil.
Průměrná složitost případu O(č2):
Časová složitost je v tomto případě mezi složitostí nejhoršího a nejlepšího případu.
To trvá n2 porovnání a swapy pro setřídění seznamu n položek.
Vložení třídění je tedy stabilní třídicí algoritmus.
Proč je řazení vložení stabilní?
Řazení vložení je stabilní, protože zachovává pořadí stejných prvků ve vstupním poli.
To je důležité pro mnoho aplikací, jako je vyhledávání dat nebo finanční analýza. Pokud máme například dva seznamy čísel a chceme je porovnat, musíme se ujistit, že je zachováno pořadí prvků.
Pokud seznamy nejsou seřazeny, nebudeme je přesně porovnávat.
Napsat komentář