Merge classificar em JavaScript

Merge classificar em JavaScript
Merge Sort divide a lista completa em sublistas ou em "n" sublistas e continua esse processo recursivamente até que cada sub-lista tenha um elemento. Depois que esse processo de “divisão e conquista” é concluído, ele começa a mesclar cada sub-lista para criar uma lista classificada.

Como funciona a classificação da mesclagem

Agora, entenderemos o funcionamento da fusão com a ajuda de um exemplo:

Vamos considerar outro exemplo para a fusão, onde temos um total de sete (ímpares) elementos em uma matriz e nós os classificaremos em ordem crescente:

[5, 7, 1, 4, 6, 3, 2]

Divida a matriz em dois sub-maiores

[5, 7, 1] e [4, 6, 3, 2]

Novamente, cada matriz será dividida em dois subarrays

[5], [7, 1] e [4, 6], [3, 2]

Aqui em cada quatro sub-maiores, uma sub-matriz tem apenas um elemento, mas as outras três matrizes ainda têm mais de um elemento, então dividiremos ainda mais cada uma dessas matrizes em duas matrizes.

[5], [7], [1], [4], [6], [3], [2]

Agora o primeiro passo está completo, pois cada matriz tem apenas um item. Agora vamos comparar os elementos da matriz e mesclar essas matrizes de itens únicos em pares.

[5, 7], [1, 4], [3, 6], [2]

Fazemos uma comparação entre os elementos da matriz das duas primeiras matrizes e as duas últimas matrizes e mudamos os valores menores para o lado esquerdo e maiores valores para o lado direito.

Uma comparação entre os elementos das duas primeiras matrizes e as segundas duas matrizes será conduzida. Por exemplo, as duas primeiras matrizes são [5,7] e [1,4]. 5 será em primeiro lugar comparado a 1 e depois com 4. Posteriormente, o segundo elemento 7 passará pelo mesmo procedimento e a matriz resultante será [1,4,5,7]. Agora vamos lidar com as duas últimas matrizes que são [3,6] e [2]. Após a comparação, a matriz que obtemos será [2,3,6].

[1, 4, 5, 7] [2, 3, 6]

Agora temos duas matrizes; [1,4,5,7] e [2,3,6]. Vamos chamá -los Arraya [1,4,5,7] e Arrayb [2,3,6] respectivamente.

Primeiro de tudo, o primeiro elemento “1" de Arraya será comparado ao segundo elemento “2" de Arrayb e o número menor “1”Será armazenado na nova matriz classificada

[1]

Na próxima iteração, “2”Será comparado com o próximo elemento“4" de Arraya. O menor “2”Será armazenado na nova matriz classificada.

[1,2]

Desta vez, "4" de Arraya será comparado ao próximo elemento "3" de Arrayb. Como "3" é menor, será inserido na nova matriz classificada.

[1,2,3]

Este procedimento será feito com cada elemento de ambas as matrizes e, uma vez que todos os elementos forem comparados, a matriz resultante será; [1,2,3,4,5,6,7].

[1, 2, 3, 4, 5, 6, 7]

Merge classificar em JavaScript

Como aprendemos como a classificação da mescla.

Crie uma função recursiva para dividir a matriz não classificada, nomeamos -a “merge_sort”. A função recursiva sempre tem um caso base para interromper o programa. Passamos a matriz não classificada para o “merge_sort”Função, e dentro desta função, encontramos o índice do meio da matriz dividindo o comprimento da matriz por 2. Além disso, utilizamos o método "Splice ()" para dividir a matriz em sub-maiores.

função Merge_sort (UnsortedArray)
const Midle_index = UnsortedArray.comprimento / 2
If (UnsortedArray.comprimento < 2)
Retorne UnsuteredArray

const LeftArray = UnsuteredArray.Splice (0, Midle_index)
Retornar MergeArray (Merge_sort (LeftArray), Merge_sort (UnsortedArray))

Agora, discutiremos o código para mesclar as duas matrizes divididas. Essas matrizes de divisão já estão classificadas na função "Merge_sort", e agora estamos mesclando -os no "MergearRays”Função.

Função MergearRays (LeftArray, RightArray)
Deixe Ary = []
enquanto (LeftArray.Comprimento && RightArray.comprimento)
if (leftArray [0] < rightArray[0])
ary.push (LeftArray.mudança())
outro
ary.empurre (direita.mudança())


Retorne [… Ary,… LeftArray,… RightArray]

Na função acima mencionada, "LeftArray" e "RightArray" são as duas matrizes classificadas e estamos mesclando para obter uma única matriz classificada. Dois métodos são usados ​​neste exemplo: o “empurrar()”Método para adicionar o valor no final da matriz classificada e o“mudança()”Método para excluir o valor selecionado da sub-matriz. Por fim, o console.O método log () é usado para testar a saída.

O trecho completo do código seria assim:

Função MergearRays (LeftArray, RightArray)
Deixe Ary = []
enquanto (LeftArray.Comprimento && RightArray.comprimento)
if (leftArray [0] < rightArray[0])
ary.push (LeftArray.mudança())
outro
ary.empurre (direita.mudança())


Retorne [… Ary,… LeftArray,… RightArray]

função Merge_sort (UnsortedArray)
const Midle_index = UnsortedArray.comprimento / 2
If (UnsortedArray.comprimento < 2)
Retorne UnsuteredArray

const LeftArray = UnsuteredArray.Splice (0, Midle_index)
Retorne os MergearRays (Merge_sort (LeftArray), Merge_sort (UnsortedArray))

UnsortedArray = [5, 7, 1, 4, 6, 3, 2];
console.log (merge_sort (UnsortedArray));

Saída:

Conclusão:

Merge Sort divide uma lista em sub-listas e continua dividindo a lista até que uma sub-lista obtenha um único elemento, então ela mescla todas as sub-listas e produz uma nova lista classificada. Neste post, aprendemos o conceito de classificação de mescla. Também explicamos como o método de emenda, o método push e o método de mudança funciona em javascript.