Com implementar Merge Sort a Python?



Aquí teniu un tutorial senzill i senzill per aprendre a fer servir Merge Sort i conèixer el seu algorisme i la seva implementació a Python.

Aquest bloc es basa en l'enfocament de dividir i conquerir. Merge Sort és un algorisme de 'dividir i conquerir' on el problema es divideix en subproblemes i després es fusiona per conquerir la solució. Aquest bloc sobre Fusiona Ordena a us guiarà detalladament pels temes següents:

Què és Classificació de combinació a Python?

La combinació d’ordenació es basa en l’algoritme divideix i conquesta, on la matriu d’entrada es divideix en dues meitats, i després s’ordena per separat i es torna a combinar per arribar a la solució. La funció merge () s’utilitza per combinar l’ordenat .





L’enfocament Dividir i Conquerir

  • La matriu es divideix per la meitat i el procés es repeteix amb cada meitat fins que cada meitat té la mida 1 o 0.
  • La matriu de la mida 1 està ordenada trivialment.
  • Ara les dues matrius ordenades es combinen en una gran matriu. I això es continua fins que es combinen tots els elements i s'ordena la matriu.

Aquí teniu una visualització del tipus de combinació per esborrar-vos la imatge

Matriu d’entrada = [3,1,4,1,5,9,2,6,5,4]



final finalment i finalitzar a Java

Combina ordre | Blocs Edureka | Edureka
Ara anem a la implementació.

Implementació de la classificació de combinació a Python

def mergeSort (nlist): print ('Dividint', nlist) if len (nlist)> 1: mid = len (nlist) // 2 lefthalf = nlist [: mid] righthalf = nlist [mid:] mergeSort (half left) mergeSort (mig dret) i = j = k = 0 mentre que i

Sortida:

$ python main.py
('Dividir', [3, 1, 4, 1, 5, 9, 2, 6, 5, 4])
('Dividir', [3, 1, 4, 1, 5])
('Dividir', [3, 1])
('Dividir', [3])
('Fusió', [3])
('Dividir', [1])
('Fusió', [1])
('Fusió', [1, 3])
('Dividir', [4, 1, 5])
('Dividir', [4])
('Fusió', [4])
('Dividir', [1, 5])
('Dividir', [1])
('Fusió', [1])
('Dividir', [5])
('Fusió', [5])
('Fusió', [1, 5])
('Fusió', [1, 4, 5])
('Fusió', [1, 1, 3, 4, 5])
('Dividir', [9, 2, 6, 5, 4])
('Dividir', [9, 2])
('Dividir', [9])
('Fusió', [9])
('Dividir', [2])
('Fusió', [2])
('Fusió', [2, 9])
('Dividir', [6, 5, 4])
('Dividir', [6])
('Fusió', [6])
('Dividir', [5, 4])
('Dividir', [5])
('Fusió', [5])
('Dividir', [4])
('Fusió', [4])
('Fusió', [4, 5])
('Fusió', [4, 5, 6])
('Fusió', [2, 4, 5, 6, 9])
('Fusió', [1, 1, 2, 3, 4, 4, 5, 5, 6, 9])
[1, 1, 2, 3, 4, 4, 5, 5, 6, 9]



abstracció de dades en c ++

Diagrama de flux per a la implementació de Merge Sort

Avantatges i ús del Merge Sort

La majoria dels altres algoritmes funcionen malament amb estructures de dades seqüencials, com ara fitxers i llistes enllaçades. En aquestes estructures l'accés a un element aleatori requereix temps lineal, no temps constant regular. I la naturalesa del tipus de combinació fa que sigui fàcil i ràpid per a aquestes estructures de dades.Una de les millors característiques de la classificació de combinacions és el seu baix nombre de comparacions. Fa O (n * log (n)) el nombre de comparacions, però el factor constant és bo en comparació amb el quicksort, cosa que el fa útil quan la funció de comparació és una operació lenta.A més, l'enfocament de dividir i conquerir del tipus de combinació fa que sigui convenient per al processament en paral·lel.

Amb això, arribem al final d’aquest bloc sobre “Com implementar la combinació d’ordenació a Python”. Espero que el contingut afegeixi un cert valor al vostre coneixement de Python. Per obtenir coneixements en profunditat sobre Python juntament amb les seves diverses aplicacions, podeu inscriure-us a la publicació amb assistència les 24 hores del dia, els 7 dies de la setmana i accés permanent.