Tento blog je založen na přístupu rozděl a panuj. Merge Sort je algoritmus „rozděl a panuj“, kde je problém rozdělen na dílčí problémy a poté je sloučen tak, aby zvítězil nad řešením. Tento blog o sloučení Seřadit vás podrobně provede následujícími tématy -
- Co je sloučení řazení v Pythonu?
- Přístup Rozděl a panuj
- Implementace sloučení řazení v Pythonu
- Vývojový diagram pro implementaci Merge Sort
- Výhody a použití
Co je sloučení řazení v Pythonu?
Sloučit řazení je založeno na algoritmu rozděl a panuj, kde je vstupní pole rozděleno na dvě poloviny, poté tříděno samostatně a sloučeno zpět, abychom dosáhli řešení. Funkce sloučení () slouží ke sloučení seřazených .
Přístup Rozděl a panuj
- Pole je rozděleno na polovinu a postup se opakuje s každou polovinou, dokud nemá každá polovina velikost 1 nebo 0.
- Pole velikosti 1 je triviálně tříděno.
- Nyní jsou dvě seřazená pole sloučena do jednoho velkého pole. A to pokračuje, dokud nejsou všechny prvky kombinovány a pole je tříděno.
Zde je vizualizace sloučení, která vám pomůže vyčistit obraz
Vstupní pole = [3,1,4,1,5,9,2,6,5,4]
přeměňte double na int java
Nyní přejdeme k implementaci.
Implementace sloučení řazení v Pythonu
def mergeSort (nlist): print ('Splitting', nlist) if len (nlist)> 1: mid = len (nlist) // 2 lefthalf = nlist [: mid] righthalf = nlist [mid:] mergeSort (lefthalf) mergeSort (pravý) i = j = k = 0, zatímco iVýstup:
$ python main.py
(„Rozdělení“, [3, 1, 4, 1, 5, 9, 2, 6, 5, 4])
(„Rozdělení“, [3, 1, 4, 1, 5])
(„Rozdělení“, [3, 1])
(„Rozdělení“, [3])
(„Sloučení“, [3])
(„Rozdělení“, [1])
(„Sloučení“, [1])
(„Sloučení“, [1, 3])
(„Rozdělení“, [4, 1, 5])
(„Rozdělení“, [4])
(„Sloučení“, [4])
(„Rozdělení“, [1, 5])
(„Rozdělení“, [1])
(„Sloučení“, [1])
(„Rozdělení“, [5])
(„Sloučení“, [5])
(„Sloučení“, [1, 5])
(„Sloučení“, [1, 4, 5])
(„Sloučení“, [1, 1, 3, 4, 5])
(„Rozdělení“, [9, 2, 6, 5, 4])
(„Rozdělení“, [9, 2])
(„Rozdělení“, [9])
(„Sloučení“, [9])
(„Rozdělení“, [2])
(„Sloučení“, [2])
(„Sloučení“, [2, 9])
(„Rozdělení“, [6, 5, 4])
(„Rozdělení“, [6])
(„Sloučení“, [6])
(„Rozdělení“, [5, 4])
(„Rozdělení“, [5])
(„Sloučení“, [5])
(„Rozdělení“, [4])
(„Sloučení“, [4])
(„Sloučení“, [4, 5])
(„Sloučení“, [4, 5, 6])
(„Sloučení“, [2, 4, 5, 6, 9])
(„Sloučení“, [1, 1, 2, 3, 4, 4, 5, 5, 6, 9])
[1, 1, 2, 3, 4, 4, 5, 5, 6, 9]
jenkins vs loutka vs kuchařVývojový diagram pro implementaci Merge Sort
Výhody a použití sloučeného řazení
Většina ostatních algoritmů funguje špatně se sekvenčními datovými strukturami, jako jsou soubory a propojené seznamy. V těchto strukturách přístup k náhodnému prvku trvá lineární čas, nikoli pravidelný konstantní čas. A povaha typu sloučení usnadňuje a urychluje tyto datové struktury.Jednou z nejlepších vlastností sloučení je nízký počet porovnání. Vytváří počet porovnání O (n * log (n)), ale konstantní faktor je ve srovnání s quicksortem dobrý, což je užitečné, když je funkce porovnání pomalá operace.Přístup rozdělení a dobývání sloučení také usnadňuje paralelní zpracování.
S tímto se dostáváme na konec tohoto blogu o „Jak implementovat Merge Sort v Pythonu“. Doufám, že obsah přidal určitou hodnotu vašim znalostem v Pythonu. Chcete-li získat podrobné znalosti o Pythonu a jeho různých aplikacích, můžete se zaregistrovat naživo s nepřetržitou podporou a doživotním přístupem.