Classificação de listas de dados é um problema que tem atormentado os programadores desde o início da programação de computadores. Classificando qualquer lista de dados pode acabar como uma memória e demorada tarefa. Devido a isso , os diferentes métodos de classificação têm sido inventados para minimizar o desafio e esforço de triagem . Um método é fundir classificação. Subdivide uma lista recursivamente em elementos singulares e recombina a lista de forma ordenada. Qualquer linguagem de programação que suporta recursão , como Python, pode implementar uma espécie de mesclagem. Coisas que você precisa
Python Interpreter com Ambiente de desenvolvimento interativo
Show Mais instruções
1
Defina a função " mergesort " . Esta função básica se chama recursivamente , dividindo o tamanho da lista ao meio com cada chamada. Uma vez que a função mergesort atinge uma lista com um elemento, a recursão pára eo elemento retornos. Como a recursão mergesort desenrola , cada lista menor é mesclados em ordem de classificação. Este exemplo mostra uma função mergesort básica que recebe uma lista como um argumento :
>>> def mergesort ( li ) :
. . . if len ( li ) < 2:
. . .
retorno li
. . . mid = len ( li ) /2
. . . primeiro = mergesort ( li [ : meados ] )
. . . last = mergesort ( li [ mid: ] )
. . . merge voltar ( first, last)
2
Configure o método de mesclagem. Esta função irá servir como o método de classificação , que retorna uma lista ordenada de elementos. O método merge leva duas listas já classificadas . Em seguida, define uma lista interna " ordenado" que irá representar as listas de argumentos ordenados combinados . O método merge realiza esta tomando o menor elemento e inseri-lo em uma nova lista de " ordenado". Uma vez que uma das listas termina , a outra lista é inserido em sua totalidade
>>> def fundir (x, y): .
. . . = ordenados []
3
Mesclar as listas no método de mesclagem. O loop "while" no exemplo compara cada item da lista por item, levando o menor elemento e inseri-lo em uma nova lista de " ordenado". Uma vez que uma das listas termina , a outra lista é inserido em sua totalidade, ea nova lista ordenada é retornada :
. . . i, j = 0, 0
. . . enquanto i < len (x) e j < len ( y):
. . . se x [i] < = y [j] :
. . . sorted.append (x [i])
. . . i + = 1
. . . outra coisa :
. . . sorted.append (y [j] )
. . . j + = 1
. . . classificadas + = x [ I: ]
. . . classificadas + = y [ : j ]
. . . voltar classificadas