Ordinamento Per Inserimento Javascript

| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

Un ordinamento di inserimento Java valuta ogni elemento in un elenco. Se un elemento è inferiore a quello precedente, l’ordinamento scambia gli elementi. In caso contrario, gli elementi rimangono nello stesso posto e i due elementi successivi vengono confrontati nell’elenco.

I computer sono bravi a ordinare gli elenchi di elementi. Usando i loop, puoi cercare tra tutti gli elementi in un elenco e cambiarne l’ordine fino a quando non appaiono in un certo modo.

Nella programmazione, ci sono alcuni metodi standard per ordinare gli elenchi. Chiamiamo questi algoritmi di ordinamento. Gli algoritmi di ordinamento leggono tutti gli elementi di un elenco e li ordinano utilizzando un particolare insieme di istruzioni. Uno degli algoritmi di ordinamento più comuni che incontrerai è un ordinamento per inserimento.

In questa guida, discuteremo come implementare un algoritmo di ordinamento per inserimento Java. Cammineremo attraverso un esempio lungo la strada in modo che tu possa imparare come funziona la logica alla base di questo tipo.

Cominciamo!

Cos’è un ordinamento per inserimento Java?

Un ordinamento per inserimento Java funziona in modo simile all’ordinamento delle carte in mano in un gioco di carte . Gli ordinamenti di inserimento controllano ogni elemento in un elenco e li scambiano con un elemento alla sua sinistra. Il fatto che un articolo venga scambiato dipende dal fatto che l’articolo sia maggiore o minore degli elementi precedenti.

Immagina, per un momento, di giocare a un gioco di carte – whist, ramino, qualunque cosa. Quando ordini le tue carte, cosa fai?

Inizierai da sinistra e controllerai se la seconda carta è ordinata. Se quella carta è maggiore dell’ultima, dovrebbe rimanere nella stessa posizione. In caso contrario, dovrebbe salire di una posizione nell’elenco.

Avrai superato ogni carta nella tua mano ed esegui questa operazione finché ogni carta non appare nell’ordine corretto.

Quando dovresti usare un ordinamento per inserimento?

Gli ordinamenti per inserimento sono più usati quando c’è solo un pochi elementi a sinistra che devono essere ordinati.

Esistono algoritmi più efficienti che è possibile utilizzare per ordinare elenchi di dati di grandi dimensioni, ad esempio un ordinamento di unione. Questo è il motivo per cui non dovresti sempre utilizzare per impostazione predefinita un ordinamento per inserimento. Con detto questo, gli ordinamenti per inserimento sono più efficienti degli ordinamenti a bolle e per selezione nell’ordinamento degli elementi in un elenco.

Un ordinamento per inserimento è un semplice algoritmo di ordinamento, il che significa che è utile per i principianti da imparare.

Procedura di ordinamento per inserimento

La visualizzazione di un mazzo di carte non è la più intuitiva al mondo. Per iniziare, esaminiamo un esempio di programmazione. Considera il seguente elenco:

863 9

In questo elenco, assumiamo che il primo elemento sia ordinato.

Il nostro prossimo passo è confrontare il secondo elemento nella nostra lista con il primo. Se il primo elemento è maggiore del secondo elemento, quell’elemento viene posizionato davanti al primo elemento.

In questo caso, 6 è maggiore di 8. Ciò significa che 6 tornerà indietro nella nostra lista di una posizione e 8 avanzerà di una posizione:

6839

Ora dobbiamo confrontare il terzo elemento con gli elementi alla sua sinistra: 3 è maggiore di 8? No, quindi 8 sposta la posizione a destra:

63< /td>89

3 è maggiore di 6? No, quindi spostiamo il numero 6:

3689

Ora, dobbiamo confrontare se il quarto elemento della nostra lista ‚Äì l’ultimo elemento ‚Äì è maggiore di ogni altro elemento della nostra lista. In questo caso, 9 è maggiore di tutti gli elementi che lo precedono: 8, 6 e 3.

Ecco l’algoritmo che abbiamo usato per ordinare la nostra lista:

Ora abbiamo un array ordinato. Gli ordinamenti di inserimento vengono ordinati in base a un elemento alla volta. Vediamo come implementare questo algoritmo di ordinamento in Java.

Come eseguire un ordinamento di inserimento in Java

Il valore più alto di due valori che vengono confrontati viene inserito una posizione a destra ogni volta che viene eseguita la funzione di ordinamento.

Va tutto bene parlando di questo in termini teorici, ma come si implementa in Java? Questa è una buona domanda. Scriviamo una classe che esegua un ordinamento per inserimento su un elenco di voti degli studenti.< /p>

Prepara la libreria Array

Cominciamo importando la libreria Arrays nel nostro programma Java. Useremo questa libreria per stampare la nostra lista sulla console una volta che l’avremo ordinata:

Dichiarare un metodo di ordinamento

Inizieremo dichiarando un metodo che attraversa il nostro elenco e ordina i nostri dati in ordine crescente:

Cominciamo scoprendo quanti elementi nel nostro array di input. Questo ci consente di creare un ciclo che attraversa ogni elemento del nostro elenco. Inizializziamo un ciclo for che esegue un ciclo finché non ordiniamo la nostra lista.

All’interno del nostro ciclo for, abbiamo dichiarato due variabili: key e last.

La "chiave" La Variabile Java tiene traccia dell’elemento che stiamo attualmente ordinando. L’"ultimo" variabile tiene traccia di quanti elementi devono essere ordinati a sinistra dell’elemento.

Il nostro programma confronterà il valore di "chiave" con ogni elemento alla sua sinistra finché non troviamo un elemento più piccolo. Questo accade nel nostro Java "while" loop.

Definisci una funzione principale

Quando eseguiamo questo codice, non succede nulla. Questo perché non abbiamo ancora definito la nostra funzione principale. Definiamo una funzione principale che definisce un array int (un array di numeri). Questa funzione principale usa la funzione insertSort() che abbiamo dichiarato per ordinare quei numeri. Incolla questo codice dopo aver dichiarato il tuo inserimentoSort metodo Java:

Nel nostro metodo principale, abbiamo dichiarato un elenco di numeri che vogliamo ordinare. Abbiamo creato un’istanza del nostro metodo InsertionSort() chiamato sortNumbers. Usiamo questo metodo per ordinare il nostro elenco di numeri in ordine crescente. Questo metodo cambia i valori all’interno dei nostri "numeri" Vettore; non abbiamo dichiarato un array separato per memorizzare i suoi valori.

Successivamente, abbiamo utilizzato il metodo Arrays.toString() per convertire il nostro array di numeri in una stringa. Stampiamo l’elenco ordinato nel console.

Revisione della complessità

L’ordinamento per inserzione ha una complessità media dei casi pari a O(n^2). Ciò si verifica quando vengono ordinati gli elementi no.

La complessità del caso migliore si verifica se un array viene ordinato. Ciò produrrà una complessità temporale di O(n). Questo perché il ciclo interno in un ordinamento per inserimento non verrà eseguito affatto in questo caso.

In nel peggiore dei casi, un ordinamento per inserzione viene eseguito a O(n^2).Questo accade se un array è in ordine crescente o decrescente e si desidera ordinarlo in modo inverso (cioè crescente in decrescente).Ciò comporterebbe il confronto di ogni elemento con tutti i altri elementi.

Conclusione

Gli ordinamenti per inserimento sono un metodo efficiente per ordinare i dati. orts confronta i valori a partire dal secondo in un elenco. Se questo valore è maggiore di quello alla sua sinistra, la nostra lista non cambia. Altrimenti, il valore viene spostato fino a quando l’elemento alla sua sinistra non è inferiore.

Ora sei pronto per iniziare a scrivere il tuo algoritmo di ordinamento per inserimento in Java! Se stai cercando altre risorse per l’apprendimento di Java, dai un’occhiata alla nostra Guida all’apprendimento di Java.