Algoritmo de classificação de mesclagem usando Python

Algoritmo de classificação de mesclagem usando Python
Neste artigo, vamos aprender sobre um algoritmo de classificação de mesclagem. Merge Sort é um método popular de classificação de divisão e conquista. A classificação de mesclagem é amplamente usada devido à sua velocidade na classificação dos dados. É uma das melhores ilustrações de como dividir e conquistar algoritmos que podem ser usados ​​na prática. Merge Sort separa uma lista de dados em duas metades e, em seguida, chama esses subpartes para dividi -los ainda mais em duas metades. Ele repete a operação até que cada componente da lista tenha apenas um elemento. Ao classificar essas subpartes de um elemento em dois componentes, ele mais tarde os fundirá. Após a classificação, a subparte de dois elementos estará vinculada aos outros dois componentes. Este procedimento é repetido até que a lista final de elementos seja obtida invocando a função repetidamente.

A ilustração básica do tipo de mesclagem é dada no exemplo a seguir:

Código Python: O código Python a seguir é para o algoritmo de classificação de mesclagem:

Def Merge_sort (ListedList):
Se Len (Listlist)> 1:
Mid = Len (Listlist) // 2
Lista de esquerda = Unsutedlist [: Mid]
RightList = UnsutedList [MID:]
# Chamada recursiva quando formos duas listas (esquerda e direita) para classificar
Merge_sort (Lista de esquerda)
Merge_sort (Lista Right)
# Porque temos duas listas, então precisamos para iteradores para iteração de cada lista
M = 0
n = 0
# Precisamos de um iterador comum que itera para a lista principal
z = 0
enquanto m < len(leftList) and n < len(rightList):
Se lista de esquerda [M] <= rightList[n]:
# Aqui estamos usando os primeiros elementos do lado esquerdo
Lista Unsuted [Z] = Lista de Espaços [M]
# Incremento o iterador principal
M += 1
outro:
Lista Unsuted [Z] = RightList [N]
n += 1
z += 1
# Se os valores forem deixados na lista, então processamos aqui
enquanto m < len(leftList):
Lista Unsuted [Z] = Lista de Espaços [M]
M += 1
z += 1
enquanto n < len(rightList):
Lista Unsuted [Z] = RightList [N]
n += 1
z += 1
Unsutedlist = [23,56,0,23,85,100,200,12,32,78,90,102]
Merge_sort (Listlist)
Impressão (Lista Unsuteada)

Saída:

[0, 12, 23, 23, 32, 56, 78, 85, 90, 100, 102, 200]

Esta é a maneira recursiva de mesclar a implementação de classificação. Aqui estão as etapas a seguir para obter a matriz classificada usando este método:

  • Linha 1: Definimos uma função (Merge_sort) quando precisamos classificar uma lista de elementos não classificados. Agora, vamos explicar todas as linhas desta função Merge_Sort.
  • Linha 2-5: A primeira coisa que estamos verificando é se os elementos da lista não classificados têm mais de 1 elemento. Se houver apenas um único elemento, não há necessidade de classificar. Então, estamos verificando esta primeira condição.

    Se os elementos forem mais de 1, estamos tentando obter o valor médio da lista para dividir a lista inteira em duas partes (esquerda e direita) para uma chamada mais recursiva. Cada chamada recursiva divide a lista na esquerda e direita até que duas entradas adjacentes sejam adquiridas.

  • Linha 8-9: Chamamos a classificação de mesclagem recursivamente para cada sublista (esquerda e direita).
  • Linha 11-15: O procedimento de classificação agora começa. Cada um chama duas partes que são atravessadas pelos iteradores M e N. O Z Iterator itera em todas as listas, fazendo modificações à medida que se passa.
  • Linha 17-26: Lista de esquerda [M] é alocada para o slot [Z] não classificado, e M é incrementado se o valor em m for menor que o valor em n. Caso contrário, a lista direita [n] é selecionada. Todos os valores atribuídos a z são todos classificados.
  • Linha 29-37: No final deste loop, uma das partes pode não ter sido atravessada completamente. Seu conteúdo é atribuído às demais posições na lista.

Complexidade do tempo:

A complexidade do tempo do tipo de mesclagem depende de dois fatores:

  • O fator dividido da lista que leva log (n)
  • O segundo fator mescla a lista dos dois, que leva tempo linear, então sua complexidade é O (n)

Assim, a complexidade total é baseada nos dois fatores anteriores do tipo de mesclagem é O (n.logn).

Vantagens do algoritmo de classificação de mesclagem:

  • A classificação de mesclagem simplifica a classificação de conjuntos de big data.
  • Merge Sort pode acessar dados em ordem, portanto o acesso aleatório não é necessário.
  • A classificação de mesclagem é um método de classificação confiável.

Desvantagens do algoritmo de classificação de mesclagem:

  • O tipo de mesclagem requer uma matriz de tamanho semelhante para classificar a lista, que é uma desvantagem do uso da memória.
  • Ao classificar conjuntos de dados menores, leva mais tempo.

Conclusão:

A classificação de mesclagem é um método de classificação rápido e versátil. Seu principal benefício é o tempo de execução e a eficiência do algoritmo enquanto classifica grandes matrizes. Comparado à classificação rápida, ele não depende de julgamentos defeituosos que resultem em horários longos. O tipo de mesclagem é o melhor algoritmo para classificar os elementos. No entanto, a principal desvantagem do tipo de mesclagem é que ela usa muita memória antes de mesclar os elementos. Também é muito útil para futuras engenharia de software, onde eles podem criar mais algoritmos de classificação com base no método de dividir e conquista.

Vimos o exemplo padrão da classificação de mesclagem sem codificar primeiro para entender como essa analogia funciona e depois implementamos etapas semelhantes na programação python. Agora, estamos cientes da tecnologia de divisão e conquista do tipo de mesclagem. Esperamos que você tenha achado este artigo útil. Confira o Linux Dint para obter mais dicas e informações.