“Conocimientos Programación>Python Programming

Recursiva Merge Ordenar en Python

2014/7/22
Clasificación es tradicionalmente una tarea difícil en la informática. La elección de un algoritmo de clasificación que es eficiente y rápido puede ser difícil . A menudo , eficiente algoritmo de selección implica el conocimiento de que los datos sean ordenados , y ordena especializados suelen funcionar mucho mejor que los algoritmos de clasificación generalizadas . Sin embargo , ciertos tipos , como el " tipo de combinación , " pueden trabajar en situaciones generalizadas por romper conjuntos y clasificación pedazos más pequeños de forma recursiva. La Lista

merge sort es un "divide y vencerás " algoritmo, ya que toma partes de las listas y de forma continua los 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 como

5 6 2 4 1 9 8 3 7

Ordenar una lista de este tipo con una mezcla tipo requerirá reducir a la mitad el tamaño de la lista varias veces hasta que cada número básico existe solo. Entonces , la clase puede comparar los números y ponerlos juntos en el orden correcto ( menor a mayor, en este caso) .
El método Merge

El método de combinación es sencillo:

def merge ( primero , segundo )

Tomar dos listas , el método unirlos comenzando a principios de cada lista. A continuación, se añade el siguiente menor cantidad de cada lista en una nueva lista . El resultado es una lista ordenada . ( Recuerde insertar correctamente pestaña espacio en blanco después de que el " tiempo " y declaraciones " if /else" . ) :

While i < len ( primero) y j < len ( segundos ) :
< p> si primero [ i ] < = segundos [ j ] :

new_list.append ( primera [ i])

i = i + 1

más:

new_list.append ( segundos [ j ] )

j = j + 1 }

Finalmente, después de unos extremos de la lista, los valores restantes se colocan en la nueva lista :

new_list + = primera [ i: ]

new_list + = segundos [c : ]

regreso end_list
Merge Sort Condiciones

la actual fusión especie impulsa el algoritmo de clasificación principal . Hay dos partes funcionales : el aspecto condicional de que se detenga la recursión vez se subdividen en las listas y la repetición real que reduce a la mitad las listas. La condición de parada es lo primero :

def mergesort ( lista ) :

si len ( lista ) == 1 :


regreso Lista

Esto asegura que cuando una lista de sub alcanza sólo un elemento , ese elemento se devuelve con el fin para el que se va a combinar con los otros números.
Merge Ordenar recursividad

La segunda mitad del el tipo es la recursividad. Tras el " if" /condicional, de la siguiente manera :

más:

media = len ( lista ) /2

start = mergesort ( lista [ media : ] )

end = mergesort ( lista [: media ] )

regreso merge (inicio, fin)

Debido a la recursividad , después de que las listas se dividen en elementos individuales , el algoritmo las pistas hasta el último método de ejecución. Así , en el momento de la declaración de "retorno de combinación (inicio , final) " ejecuta el algoritmo devuelve un combinado, lista ordenada de los dos anteriormente se fusionaron , listas ordenadas de menor tamaño .

Python Programming
¿Cómo hacer la división regular en Python
¿Cómo deshacerse de un carácter de nueva línea en Python
Cómo quitar un texto en Python
Cómo comprobar Clases variables en Python
Cómo calcular el número de secuencia de Fibonacci en Python usando Loops
Cómo utilizar las funciones en Python
Cómo obtener las funciones de un objeto en Python
Cómo aplanar listas en Python
Conocimientos Informáticos © http://www.ordenador.online