Como implementar uma classificação de mesclagem em java

Como implementar uma classificação de mesclagem em java

Na programação Java, pode haver casos em que o desenvolvedor precisa classificar as entradas em massa. Por exemplo, organizar ou analisar os valores gerados aleatoriamente. Nesses casos, o “mesclar classificar”Em Java, é eficaz e mais rápido, consumindo menos tempo para classificar as entradas ou listas mais longas em comparação com outros algoritmos I.e., ““Tipo de bolha”.

Este blog elaborará a implementação do algoritmo "Merge Sort" em Java.

Como implementar um "tipo de mesclagem" em java?

O "mesclar classificar"É baseado no"dividir e conquistar”Algoritmo de modo que a matriz seja dividida em metades iguais e depois subdividida até que a divisão não possa mais ser feita. Depois que a matriz é subdividida, ela é mesclada novamente com base nos elementos de uma maneira classificada (ascendente).

Demonstração do algoritmo de "classificação de mesclagem"

Vamos ver o código fornecido abaixo para entender o conceito discutido:

classe pública Mergesort
public static void MergedArray (int [] leftArray, int [] RightArray, int [] FinalArray, int leftArraySize, int sightraySize)
int item = 0, esquerda = 0, direita = 0;
enquanto (esquerdaIf (LeftArray [à esquerda]finalArray [Item ++] = LeftArray [esquerda ++];

outro
finalArray [Item ++] = RightArray [Right ++];

enquanto (esquerdafinalArray [Item ++] = LeftArray [esquerda ++];

enquanto (certofinalArray [Item ++] = RightArray [Right ++];


No código acima alocado para fusão, aplique as seguintes etapas:

    • Defina uma função chamada “MergedArray”Tendo os parâmetros declarados para as matrizes esquerda e direita, a matriz original e os tamanhos das matrizes esquerda e direita, respectivamente.
    • Na definição da função, inicialize os valores declarados para aplicar uma condição posteriormente no código.
    • Na próxima etapa, aplique o combinado “enquanto”Loop e“se“Condição para verificar a condição de fusão.
    • É tal que, se o elemento na matriz esquerda for menor que o do elemento da matriz direita em um índice específico, a matriz mesclada será anexada com o elemento de matriz esquerdo, começando da esquerda para a direita.
    • No outro caso, o elemento de matriz certo é anexado.
    • Depois disso, aplique o “enquanto”Loop para verificar se apenas os elementos na matriz esquerda ou direita são deixados e anexá -los à matriz de acordo.

Implementação


Agora, vamos para o seguinte trecho de código:

public static void dividearray (int [] matriz, int length)
if (comprimento < 2)return;
int div = comprimento / 2;
int [] Larray = new int [div];
int [] rarray = new int [comprimento-DIV];
int temp = 0;
para (int i = 0; iif (ilarray [i] = matriz [i];

outro
rarray [temp] = matriz [i];
temp = temp+1;

Dividearray (Larray, div);
Dividearray (Rarray, comprimento-div);
MergedArray (Larray, Rarray, Array, Div, Length-Div);


Neste código implementado para dividir a matriz aprovada, execute as etapas abaixo fornecidas:

    • Defina a função “Dividearray ()”Tendo os parâmetros apontando para a matriz passada e seu comprimento.
    • Agora, verifique a condição de modo que o comprimento da matriz não seja maior que “2”. Nesse caso, retorne a matriz como é. Caso contrário, execute as funcionalidades adicionais.
    • Depois disso, divida a matriz em duas metades iguais por meio de seu comprimento passado.
    • Na próxima etapa, crie duas matrizes inteiras com base no comprimento dividido da matriz passada.
    • Agora, anexe as matrizes divididas esquerda e direita com os elementos de matriz passados.
    • Por fim, invocar esta função recursivamente sobre essas duas matrizes divididas que acumulam os dados copiados da matriz passada original e acessarem o “MergedArray ()”Função que compara e classifica as matrizes esquerda e direita.

Implementação


Agora, visão geral “principal”Código:

public static void main (string args [])
int [] MurgesorTArray = 30, 12, 46, 6, 17, 23;
Dividearray (MergesortArray, MergesortArray.comprimento);
para (int i = 0; i< mergesortArray.length;++i)
Sistema.fora.impressão (MergesorTArray [i]+ "");


No "principal”, Aplique as seguintes etapas:

    • Declare uma matriz chamada “MergesortArray”Isso precisa ser classificado.
    • Na próxima etapa, invoco a função “Dividearray ()”Ao aprovar a matriz declarada e seu comprimento através do“comprimentoPropriedade, como seus argumentos, respectivamente.
    • Depois disso, itera através da matriz e exiba os elementos de matriz classificados por meio do “para" laço.
    • Algoritmo: A matriz fornecida será passada para a função “Dividearray ()”Isso divide a matriz e essa função chama a função“MergedArray ()”Isso mescla as matrizes divididas com base nos elementos contidos.

Implementação


Código inteiro

classe pública Mergesort
public static void MergedArray (int [] leftArray, int [] RightArray, int [] FinalArray, int leftArraySize, int sightraySize)
int item = 0, esquerda = 0, direita = 0;
enquanto (esquerdaIf (LeftArray [à esquerda]finalArray [Item ++] = LeftArray [esquerda ++];

outro
finalArray [Item ++] = RightArray [Right ++];

enquanto (esquerdafinalArray [Item ++] = LeftArray [esquerda ++];

enquanto (certofinalArray [Item ++] = RightArray [Right ++];

public static void dividearray (int [] matriz, int length)
if (comprimento < 2)return;
int div = comprimento / 2;
int [] Larray = new int [div];
int [] rarray = new int [comprimento-DIV];
int temp = 0;
para (int i = 0; iif (ilarray [i] = matriz [i];

outro
rarray [temp] = matriz [i];
temp = temp+1;

Dividearray (Larray, div);
Dividearray (Rarray, comprimento-div);
MergedArray (Larray, Rarray, Array, Div, Length-Div);

public static void main (string args [])
int [] MurgesorTArray = 30, 12, 46, 6, 17, 23;
Dividearray (MergesortArray, MergesortArray.comprimento);
para (int i = 0; i< mergesortArray.length;++i)
Sistema.fora.impressão (MergesorTArray [i]+ "");


Saída


Nesta saída, pode estar implícito que a matriz passada é classificada adequadamente.

Conclusão

O tipo de mesclagem é baseado no “dividir e conquistarAlgoritmo de modo que a matriz seja subdividida em metades iguais e mesclada novamente com base nos elementos classificados. O resultado do algoritmo é buscado de acordo com o original de uma maneira classificada. Este blog discutiu a implementação do algoritmo de classificação de mesclagem em java.