Recursiva Merge Ordenar en Python




La Lista

Una especie de unión " es un divide y vencerás algoritmo ", como porciones de las listas y los mantiene continuamente rompe por la mitad hasta llegar a los elementos individuales de la lista, que luego se fusionaron en orden. Por ejemplo, comience con una lista numérica

5 6 2 4 1 9 8 3 7



Ordenar una lista de este tipo, con una especie de sindicato exige reducir a la mitad el tamaño de la lista hasta que cada número de la base existe solamente. Entonces, la clase puede comparar los números y ponerlos juntos en el camino correcto (el aumento, en este caso).

El método Merge

El método de fusión es muy simple:

def merge (primero, segundo)

Tomando dos listas, el método fusionados entre sí, comenzando en el comienzo de cada lista. Y luego añade la siguiente cantidad mínima de cada lista en una nueva lista. El resultado es una lista ordenada. (Recuerde insertar correctamente el espacio en blanco de la tarjeta después de '" mientras y declaraciones if / else ".)

mientras

si antes de [i] <= Segundo [j]:

new_list.append (primera [i])

i = i + 1

más:

new_list.append (de acuerdo a [j])

j = j + 1}

Finalmente, después de un extremo de la lista, los valores restantes se incluyen en la nueva lista:

new_list + = primera [i:]

new_list + = segundos [j:]

volver end_list

Merge Sort Condiciones

El algoritmo de ordenación por fusión empuja la actual ordenación principal. Hay dos partes funcionales: el aspecto condicional que detiene la repetición una vez que las listas se descomponen y la repetición real que reduce a la mitad las listas. La condición de parada es en primer lugar:

def mergesort (lista):

si len (lista) == 1:

Enumere nuevo

Esto asegura que cuando una lista de sub alcanza sólo un elemento, elemento que se devuelve de manera que se combina con los otros números.

Combinar Ordenar recursividad

La segunda mitad de este tipo es la recursividad. Después if / condicional, de la siguiente manera:

más:

Media = len (lista) / 2

start = mergesort (lista [media:])

end = mergesort (lista [centro])

volver join (inicio, fin)

Debido a la recursividad, después de que las listas se dividen en elementos individuales, el algoritmo se remonta al último método de ejecución. Así, en el momento de la declaración " unión regreso (inicio, fin) " ejecutar el algoritmo devuelve una fusión, la lista ordenada de los dos anteriormente se fusionaron, listas ordenadas de menor tamaño.



Deja un comentario