Come implementare un tipo di unione in java

Come implementare un tipo di unione in java

Nella programmazione Java, ci possono essere casi in cui lo sviluppatore deve ordinare le voci di massa. Ad esempio, organizzare o analizzare i valori generati in modo casuale. In tali casi, il "Unisci il tipo"In Java è efficace e più veloce, consumando così meno tempo per ordinare le voci o gli elenchi più lunghi rispetto ad altri algoritmi i.e., "Bolle Ord".

Questo blog approfondirà l'implementazione dell'algoritmo di "ordinamento" in Java.

Come implementare un "tipo di unione" in Java?

IL "Unisci il tipo"Si basa su"dividere e conquistare"Algoritmo tale che l'array sia diviso in uguali metà e quindi ulteriormente suddiviso fino a quando la divisione non può più essere eseguita. Dopo che l'array è stato suddiviso, viene nuovamente fuso in base agli elementi in modo ordinato (ascendente).

Dimostrazione dell'algoritmo di "ordinamento"

Panoramiamo il codice sotto fornito per comprendere il concetto discusso:

Classe pubblica Mergesort
public static void MaldEdArray (int [] SyllArray, int [] RightArray, int [] FinalArray, int SyllAraySize, int reightArraysize)
int item = 0, a sinistra = 0, a destra = 0;
mentre (a sinistraif (LeftArray [Left]FinalArray [Item ++] = LeftArray [Left ++];

altro
FinalArray [Item ++] = RightArray [Right ++];

mentre (a sinistraFinalArray [Item ++] = LeftArray [Left ++];

mentre (giustoFinalArray [Item ++] = RightArray [Right ++];


Nel codice sopra assegnato per la fusione, applicare i seguenti passaggi:

    • Definire una funzione chiamata "FledEdArray"Avere i parametri dichiarati per array sinistro e destro, l'array originale e le dimensioni degli array sinistra e destra, rispettivamente.
    • Nella definizione della funzione, inizializza i valori indicati per applicare una condizione più avanti nel codice.
    • Nel passaggio successivo, applica il combinato "Mentre"Loop e"Se"Condizione per verificare la condizione per la fusione.
    • È tale che se l'elemento nell'array sinistro è più piccolo di quello dell'elemento array destro in un determinato indice, l'array unita viene aggiunto con l'elemento array sinistro a partire da sinistra a destra.
    • Nell'altro caso, viene aggiunto l'elemento dell'array giusto.
    • Dopodiché, applica il "Mentre"Loop per verificare se solo gli elementi nell'array sinistro o destro vengono lasciati e li aggiungono all'array di conseguenza.

Implementazione


Ora, passiamo al seguente frammento di codice:

public static void dividearray (int [] array, int lunghezza)
Se (lunghezza < 2)return;
int div = lunghezza / 2;
int [] larray = new int [div];
int [] rarray = new int [lunghezza-div];
int temp = 0;
per (int i = 0; iif (ilaray [i] = array [i];

altro
raray [temp] = array [i];
temp = temp+1;

Dividearray (Larray, Div);
dividarray (raray, lunghezza-div);
MEDEDARDAY (LARRAY, RARRAY, Array, Div, Long-Div);


In questo codice implementato per la divisione dell'array passato, eseguire i passaggi sotto forniti:

    • Definire la funzione "dividarray ()"Avere i parametri che puntano all'array passato e alla sua lunghezza.
    • Ora, controlla la condizione in modo tale che la lunghezza dell'array non sia maggiore di "2". In tal caso, restituisci l'array così com'è. Altrimenti, esegui le ulteriori funzionalità.
    • Dopodiché, dividi l'array in due metà uguali tramite la sua lunghezza (array).
    • Nel passaggio successivo, creare due array di interi in base alla lunghezza divisa dell'array passato.
    • Ora, aggiungi gli array di divisione sinistra e destra con gli elementi di array passati.
    • Infine, invoca questa funzione in modo ricorsivo su questi due array divisi che accumulano i dati copiati dell'array passato originale e accedono al "MaldEdArray ()"Funzione che confronta e ordina gli array sinistra e destra.

Implementazione


Ora, panoramica il "principale" codice:

public static void main (string args [])
int [] Mergesorray = 30, 12, 46, 6, 17, 23;
Dividearray (Mergesorray, Mergesorray.lunghezza);
per (int i = 0; i< mergesortArray.length;++i)
Sistema.fuori.print (Mergesorray [i]+ "");


Nel "principale", Applica i seguenti passaggi:

    • Dichiarare un array chiamato "Mergesorray"Deve essere risolto.
    • Nel passaggio successivo, invoca la funzione "dividarray ()"Passando l'array dichiarato e la sua lunghezza tramite"lunghezza"Proprietà, come i suoi argomenti, rispettivamente.
    • Successivamente, itera attraverso l'array e visualizza gli elementi dell'array ordinato tramite "per" ciclo continuo.
    • Algoritmo: L'array fornito verrà passato alla funzione "dividarray ()"Ciò divide l'array e questa funzione invoca quindi la funzione"MaldEdArray ()"Ciò unisce gli array divisi in base agli elementi contenuti.

Implementazione


Intero codice

Classe pubblica Mergesort
public static void MaldEdArray (int [] SyllArray, int [] RightArray, int [] FinalArray, int SyllAraySize, int reightArraysize)
int item = 0, a sinistra = 0, a destra = 0;
mentre (a sinistraif (LeftArray [Left]FinalArray [Item ++] = LeftArray [Left ++];

altro
FinalArray [Item ++] = RightArray [Right ++];

mentre (a sinistraFinalArray [Item ++] = LeftArray [Left ++];

mentre (giustoFinalArray [Item ++] = RightArray [Right ++];

public static void dividearray (int [] array, int lunghezza)
Se (lunghezza < 2)return;
int div = lunghezza / 2;
int [] larray = new int [div];
int [] rarray = new int [lunghezza-div];
int temp = 0;
per (int i = 0; iif (ilaray [i] = array [i];

altro
raray [temp] = array [i];
temp = temp+1;

Dividearray (Larray, Div);
dividarray (raray, lunghezza-div);
MEDEDARDAY (LARRAY, RARRAY, Array, Div, Long-Div);

public static void main (string args [])
int [] Mergesorray = 30, 12, 46, 6, 17, 23;
Dividearray (Mergesorray, Mergesorray.lunghezza);
per (int i = 0; i< mergesortArray.length;++i)
Sistema.fuori.print (Mergesorray [i]+ "");


Produzione


In questo output, si può implicare che l'array passato sia ordinato in modo appropriato.

Conclusione

L'ordinamento di unione si basa su "dividere e conquistare"Algoritmo in modo tale che l'array sia suddiviso in uguali metà e si unisce di nuovo in base agli elementi ordinati. Il risultato dell'algoritmo viene recuperato secondo quello originale in modo ordinato. Questo blog ha discusso dell'implementazione dell'algoritmo di tipo di unione in Java.