Shell Ordina C ++

Shell Ordina C ++
Il linguaggio C ++ ha escogitato molte tecniche di smistamento da utilizzare nel programma per ordinare una serie di oggetti. Una di quelle tecniche di smistamento è il tipo di shell che è principalmente un'altra forma di ordinamento di inserimento. All'interno dell'ordinamento di inserimento, tendiamo a spostare un singolo valore nella sua prossima posizione dell'indice. Il movimento di un valore per l'indice successivo consecutivo potrebbe non dare il risultato richiesto se vogliamo posizionarlo alla fine e possiamo richiedere più tempo durante l'ordinamento. Allo stesso tempo, l'ordinamento della shell può spostare un valore lontano dal suo luogo originale e richiede meno tempo a farlo. Pertanto, abbiamo deciso di dimostrare il funzionamento della tecnica di ordinamento della shell nella programmazione C ++. Cominciamo con la creazione di file C ++ e la sua apertura attraverso le istruzioni dimostrate di seguito sulla console terminale di Ubuntu 20.04 Sistema.

Esempio 01:

A partire dal primo esempio in un nuovo file, dobbiamo prima utilizzare le librerie richieste. Senza l'intestazione "iostream", un utente non può utilizzare alcun flusso di input e output nel codice. Un programmatore C ++ userà sempre "spazio dei nomi" e librerie come "iostream", "stdlib" e "stdio.h ", ecc. Ecco che arriva il metodo SWAP () che verrà chiamato dalla funzione "ordinamento". La funzione di ordinamento passerà due valori in posizioni diverse al metodo "swap ()" e utilizzerà la variabile "temp" per scambiarli l'uno con l'altro.

La funzione show () richiederà un array e le sue dimensioni da mostrare nei suoi parametri dal metodo principale (). Utilizzerà il ciclo "per" per iterare l'intero array fino alle sue dimensioni "s."Utilizzare l'oggetto" cout "per visualizzare ciascun valore usando l'indice" i "separato da altri valori da uno spazio. Dopo che tutti i valori vengono visualizzati, il cout verrà nuovamente utilizzato per aggiungere l'interruzione della linea.

Dopo che è stato visualizzato l'array non desiderato, sta per funzionare la funzione "ordinamento". La funzione di ordinamento prenderà un array e le sue dimensioni per l'uso. Tre variabili interi inizializzate G, J, K. La variabile "G" verrà utilizzata nel primo ciclo "per" esterno per ridurre il divario tra i valori. Sarà iniziato dalla metà dell'array secondo "G = N/2". Ad ogni iterazione, il divario sarà nuovamente diminuito di "G/2".e., Verrà creata un'altra metà. In tal modo, l'array verrà diviso in varie parti e la dimensione del gap sarà inferiore. Il prossimo loop "J" inizierà dal valore di gap corrente, i.e., "G", che sarà il punto medio di un array in quel momento. E continuerà fino all'ultimo indice di un array. Ad ogni iterazione, "J" sarà incrementato. La "k" per loop inizierà da "j-g" e continuerà fino a "k> =."Se il valore in" k+g "è maggiore o uguale al valore in" k "di un array, romperà il ciclo. Altrimenti, i valori verranno scambiati dalla chiamata di funzione "swap". Molto probabilmente, il valore di "k+g" sarà una posizione di partenza e "k" sarà nell'ultima posizione di un array.

Ogni programma avvia la sua esecuzione dal codice funzione driver principale () durante l'esecuzione. La nostra funzione principale () è stata avviata con un'inizializzazione "A" di array intero. Questo array "a" sarà in un ordine casuale, io.e., non ordinato. L'oggetto "cout" è l'istruzione di output standard C ++ utilizzata per visualizzare un valore di testo o variabile sulla shell. Questa volta, lo abbiamo usato per far sapere agli utenti che l'array prima dell'ordinamento verrà visualizzato sullo schermo. La funzione "show ()" verrà chiamata passandola l'array non orribile "A" e il numero di valori che si desidera mostrare prima dell'ordinamento. Sebbene ci siano un totale di 10 elementi nell'array, abbiamo smistato e visualizzato solo 9. Il metodo "ordinamento" viene chiamato passando l'array e il numero di elementi da ordinare qui. Dopo che l'ordinamento è stato fatto con l'ordinamento della shell, il metodo "show" verrà nuovamente utilizzato per visualizzare il totale dei primi 9 elementi ordinati sulla shell.

Il guscio.Il file CC è stato compilato e ha portato all'output di seguito dopo l'esecuzione. I 9 elementi non mobili per l'array vengono visualizzati per primi. Nell'ultima riga, gli stessi 9 elementi di un array vengono visualizzati in ordine crescente per ordinamento.

Esempio 02:

Ecco che arriva un nuovo esempio di utilizzo dell'ordinamento con shell nel nostro programma. Abbiamo usato lo stesso shell.File CC e inizializza il nostro codice con la stessa intestazione e spazio dei nomi. Questo programma inizia dalla funzione principale (). Il metodo principale () ha un array intero a di 5 valori già inizializzati. La variabile "N" viene inizializzata utilizzando la funzione "sizeof ()" per c++. Questo viene utilizzato per calcolare i numeri totali in un array "A" e salvare quel valore in variabile "n."Possiamo vedere che l'array ha solo 5 elementi, quindi puoi semplicemente saltare l'uso del calcolo di più elementi e utilizzare" 5 "ovunque nel codice.

Viene il messaggio che gli utenti devono essere vigili perché verrà visualizzato l'array non desiderato, i.e., Via “Cout."La funzione" Display () "viene chiamata qui per visualizzare il matrice completa non preflitta passandolo un array e il numero di elementi in esso. La funzione Display () utilizzerà il ciclo "per" per iterare l'array passato fino al suo ultimo indice e visualizzare i valori in quanto utilizza l'oggetto "cout" e indice "i."Here arriva il metodo" Ordina () ". La chiamata della funzione a questo metodo sta prendendo l'array e il suo numero totale di elementi come input. Il ciclo "per" più esterno è qui per ridurre il divario tra i valori/indici dividendo il numero totale di elementi per 2.

Il valore di "g" deve essere maggiore di 0 e sarà di nuovo diminuito di 2 dopo ogni iterazione. Ciò ridurrà il divario in ogni iterazione. Il ciclo interno "I" prenderà il valore di Gap "G" come punto di partenza e continuerà fino a "n."In questo ciclo, il valore di" i "verrà assegnato alla variabile temporanea" temp ". Il ciclo "J" più interiore è qui. Inizia dal punto "I" fino a quando il valore di G diventa uguale o maggiore di "G", e anche il valore nell'indice "J-G" dell'array diventa maggiore della variabile "temp". La "J" sarà decrementata da "G" ogni volta. Questo ciclo continuerà a scambiare il valore all'indice "j-g" con il valore in "j."Il valore di" temp "verrà assegnato a indicizzare" j "dell'array, i.e., scambia dove richiesto. Dopo essere tornato alla funzione principale (), il metodo Display () verrà nuovamente chiamato per visualizzare l'array ordinato.

In compilation e in esecuzione della shell.File CC, si scopre che l'array non desiderato è stato ordinato ora.

Conclusione:

Nel nostro paragrafo introduttivo, abbiamo illustrato lo scopo principale di usare l'ordinamento della shell piuttosto che l'inserimento in C++. Per dimostrare come funziona, sono stati costruiti due esempi semplici ma diversi, che possono essere modificati in base alle preferenze dell'utente. Il primo esempio utilizza metodi definiti dall'utente per scambiare e ordinare elementi, ma il secondo utilizza una singola funzione per eseguire entrambi. Entrambi questi scenari di ordinamento Shell possono essere utilizzati per qualsiasi progetto relativo alla tecnologia.