Heap ordin c ++

Heap ordin c ++

Come sappiamo che il linguaggio C ++ ha molti algoritmi di smistamento per le strutture simili a un array. Una di quelle tecniche di smistamento è l'ordinamento del heap. È abbastanza popolare tra gli sviluppatori C ++ perché è considerato il più efficiente quando si tratta di funzionare. È un po 'diverso dalle altre tecniche di smistamento perché richiede le informazioni degli alberi della struttura dei dati insieme al concetto di array. Se hai sentito e imparato sugli alberi binari, allora l'apprendimento dell'ordinamento non sarà più un problema per te.

Nell'ordinamento dell'heap, è possibile generare due tipi di cumuli, i.e., Min-heap e max-heap. Il max-heap risolverà l'albero binario in ordine decrescente, mentre il minimo ordinerà l'albero binario in ordine crescente. In altre parole, l'heap sarà "max" quando il nodo genitore di un figlio ha un valore maggiore e viceversa. Quindi, abbiamo deciso di scrivere questo articolo per tutti quegli utenti ingenui di C ++ che non hanno alcuna conoscenza preliminare sull'ordinamento, in particolare l'ordinamento heap.

Iniziamo il nostro tutorial di oggi con Ubuntu 20.04 Accedi per ottenere l'accesso al sistema Linux. Dopo l'accesso, utilizzare il collegamento "Ctrl+Alt+T" o l'area di attività per aprire la sua applicazione della console denominata "Terminale."Dobbiamo utilizzare la console per realizzare un file per l'implementazione. Il comando per la creazione è una semplice istruzione "touch" di una sola parola seguendo il nuovo nome per un file da creare. Abbiamo nominato il nostro file C ++ come "heap.CC ". Dopo la creazione di file, è necessario iniziare a implementare i codici in essa. Per questo, devi aprirlo prima tramite alcuni editori di Linux. Ci sono tre redattori integrati di Linux che possono essere utilizzati a questo scopo, i.e., nano, vim e testo. Stiamo usando l'editor "GNU Nano".

Esempio # 01:

Spiegheremo un programma semplice e abbastanza chiaro per l'ordinamento di heap in modo che i nostri utenti possano capirlo e impararlo bene. Utilizzare lo spazio dei nomi C ++ e la libreria per input-output all'inizio di questo codice. La funzione heapify () sarà chiamata da una funzione "sort ()" per entrambi i suoi loop. Il primo loop "per" chiamerà il passaggio dell'array "a", n = 6 e root = 2,1,0 (per quanto riguarda ogni iterazione) a costruire un mucchio ridotto.

Usando il valore della radice ogni volta, otterremo il valore variabile "più grande" è 2,1,0. Quindi, calcoleremo i nodi "L" a sinistra e "R" di destra usando il valore "radice". Se il nodo sinistro è maggiore della "root", il primo "if" assegnerà "L" al più grande. Se il nodo giusto è maggiore della radice, il secondo "if" assegnerà "r" al più grande. Se "più grande" non è uguale al valore "root", il terzo "if" scambierà il valore della variabile "più grande" con "root" e chiamerà la funzione heapify () al suo interno, i.e., chiamata ricorsiva. L'intero processo sopra spiegato verrà utilizzato anche per il massimo di heap quando il secondo ciclo "per" verrà iterato all'interno della funzione di ordinamento.

La funzione "sort ()" a forma di luce mostrata verrà chiamata per ordinare i valori dell'array "a" in ordine crescente. Il primo ciclo "per" è qui; Costruisci un mucchio o puoi dire un array di riorganizzazione. Per questo, il valore di "i" verrà calcolato da "n/2-1" e diminuito ogni volta dopo la chiamata di funzione heapify (). Se hai un totale di 6 valori, diventerà 2. Verranno eseguite un totale di 3 iterazioni e la funzione heapify verrà chiamata 3 volte. Il prossimo ciclo "per" è qui per spostare la radice corrente fino alla fine di un array e chiamare la funzione heapify 6 volte. La funzione SWAP porterà il valore all'indice di iterazione corrente "A [i]" di un array con il primo valore dell'indice "A [0]" di un array. La funzione heap () sarà chiamata per generare il massimo heap sul mucchio ridotto già generato, i.e., "2,1,0" al primo loop "per".

Ecco la nostra funzione "Display ()" per questo programma che ha preso un array e il numero di elementi dal codice driver principale (). La funzione "Display ()" verrà chiamata due volte, i.e., Prima di ordinare per visualizzare l'array casuale e dopo l'ordinamento per mostrare l'array ordinato. Viene avviato con il ciclo "per" che utilizzerà la variabile "n" per l'ultimo numero di iterazione e inizierà dall'indice 0 di un array. L'oggetto C ++ "cout" viene utilizzato per visualizzare ogni valore dell'array "A" su ogni iterazione mentre il ciclo continua. Dopotutto, i valori per l'array “A” verranno visualizzati sulla shell uno dopo l'altro, separati l'uno dall'altro da uno spazio. Finalmente, l'interruzione della linea verrà inserita utilizzando di nuovo l'oggetto "cout".

Questo programma inizierà dalla funzione principale () poiché C ++ tende sempre a eseguirlo da esso. All'inizio della nostra funzione principale (), l'array intero “A” è stato inizializzato con un totale di 6 valori. Tutti i valori sono archiviati in un ordine casuale all'interno dell'array a. Abbiamo preso le dimensioni dell'array "A" e la dimensione del primo valore dell'indice "0" dell'array A per calcolare il numero totale di elementi in un array. Quel valore calcolato verrà memorizzato in una nuova variabile "n" di tipo intero. L'output standard C ++ può essere visualizzato con l'aiuto di un oggetto "Cout."

Quindi, stiamo utilizzando lo stesso oggetto "cout" per visualizzare il semplice messaggio "array originale" sulla shell per far sapere ai nostri utenti che verrà visualizzato l'array originale non richiesto. Ora, in questo programma abbiamo una funzione "display" definita dall'utente che verrà chiamata qui per visualizzare l'array originale "A" sulla shell. L'abbiamo superato il nostro array originale e la variabile "N" nei parametri. Dopo aver visualizzato l'array originale, stiamo utilizzando la funzione di ordinamento () qui per organizzare e riorganizzare il nostro array originale in ordine crescente usando l'ordinamento heap.

L'array originale e la variabile "N" vengono passati nei parametri. L'istruzione "cout" successiva viene utilizzata per visualizzare il messaggio "Array ordinato" dopo l'uso di una funzione di "ordinamento" per ordinare l'array "A."Viene nuovamente utilizzata la chiamata della funzione alla funzione" display ". Questo per visualizzare l'array ordinato sulla shell.

Dopo il completamento del programma, dobbiamo renderlo senza errori utilizzando il compilatore "G ++" sulla console. Il nome del file verrà utilizzato con l'istruzione del compilatore "G ++". Il codice verrà specificato come privo di errori se non lancia alcun output. Dopo questo, il "./UN.Il comando out ”può essere lanciato per eseguire il file di codice privo di errori. Sono stati visualizzati l'array originale e l'array ordinato.

Conclusione:

Questo riguarda tutto il funzionamento di un heap ordin e un modo per utilizzare l'ordinamento di heap nel codice del programma C ++ per eseguire l'ordinamento. Abbiamo elaborato il concetto di heap e heap massimo per l'ordinamento di heap in questo articolo e abbiamo anche discusso dell'uso di alberi a tale scopo. Abbiamo spiegato l'ordinamento del heap nel modo più semplice possibile per i nostri nuovi utenti C ++ che utilizzano il sistema Linux.