Jak implementovat Merge Sort v Pythonu?



Zde je jednoduchý a snadný návod, jak se naučit používat Sloučit řazení, a dozvědět se o jeho algoritmu a implementaci v Pythonu

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?

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

Sloučit řazení | Blogy Edureka | Edureka
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 i

Vý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.