Un programmatore può scrivere la sua funzione di tipo (). Tuttavia, è probabile che la funzione di ordinamento () dalla libreria dell'algoritmo abbia funzionante meglio di ciò che scrive il programmatore ordinario.
La funzione Ordine () può ordinare i valori di un vettore in ordine crescente o in ordine decrescente. Per ordinare un vettore, la libreria dell'algoritmo deve essere inclusa. Anche la libreria vettoriale deve essere inclusa. L'inizio del programma dovrebbe essere qualcosa di simile:
#includereIl vettore è in realtà una classe, da cui è possibile creare oggetti vettoriali. Con la sezione di alto livello del programma, un vettore da ordinare, può essere creato come segue:
vettoreIl nome della classe è un vettore. Il nome dell'oggetto istanziato è VTR.
In questo tutorial, la codifica di ordinamento viene eseguita nella funzione C ++ Main (). Questo tutorial spiega come ordinare un vettore C ++ usando il vettore sopra, VTR.
Contenuto dell'articolo
Ordinamento predefinito
Ordinamento predefinito in ordine crescente. La sintassi per questo è:
modelloOrdinando l'intero vettore
Il seguente codice ordina l'intero vettore:
Ordina (VTR.inizio (), vtr.FINE());L'elenco ordinato è:
A, B, C, D, M, N, S, V, X, Z,che è corretto. Se l'ordinamento non è corretto, allora il guasto è quello del programmatore e non quello della funzione di ordinamento ().
Il randominettator è intrinseco. VTR.inizio () restituisce un iteratore che indica il primo elemento e VTR.end () restituisce un altro iteratore dello stesso tipo che punta subito dopo l'ultimo elemento. Quindi non è necessario istanziare un vettore che indica, randomizzatore. In questo modo, l'intero elenco è ordinato.
Ordinare un intervallo in ordine crescente
L'elenco non orientato sopra ha dieci elementi con indici:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9Per ordinare solo gli elementi dalla posizione 4, che è indice, 3 = 4 - 1, posizione 9, che è indice, 8 = 9 - 1, aggiungi 3 a VTR.Inizia () per avere il primo iteratore, quindi aggiungi 8 a VTR.Inizia () per avere l'ultimo iteratore, per la funzione Sort (). Il 9th L'elemento dell'indice 8 non sarà incluso nell'ordinamento. Cioè, l'ultimo elemento indicato nell'intervallo scelto, è escluso per l'ordinamento. Il seguente codice illustra questo:
Ordina (VTR.inizio () + 3, vtr.inizio () + 8);Gli elementi nelle posizioni 4, 5, 6, 7, 8 sono stati ordinati. L'elemento al 9th La posizione non è stata inclusa nel tipo. Queste posizioni corrispondono agli indici 3, 4, 5, 6, 7. L'elemento su Index 8 non è stato incluso nel tipo.
Quindi, per ordinare un intervallo, identificare i primi e gli ultimi elementi nella gamma, non necessariamente dell'intero elenco. Aggiungi l'indice del primo elemento all'iteratore di inizio (). Aggiungi l'indice dell'ultimo elemento, ancora all'inizio (). Ricorda che l'ultimo elemento per l'intervallo non sarà incluso nel tipo, ma il primo elemento per l'intervallo verrà incluso.
L'aggiunta di un indice a un iteratore è possibile perché l'aggiunta di un numero è lo stesso dell'incremento dell'iteratore che lo stesso numero di volte. Incrementare un iteratore una volta lo rende un punto all'elemento successivo.
Ordinamento in ordine decrescente
La sintassi è:
modelloCiò differisce dalla sintassi sopra con la presenza di "confronta comp". comp è un puntatore di funzione o un oggetto funzione. Comp effettivamente decide se l'ordinamento dovrebbe essere ascendente o discendente. La sua assenza è il caso predefinito, il che significa scendere.
Ordinamento dell'intero elenco in ordine decrescente
Il seguente codice ordina l'intero vettore sopra in ordine decrescente:
Ordina (VTR.inizio (), vtr.fine (), maggioreIl vettore ordinato in ordine decrescente è:
Z, x, v, s, n, m, d, c, b, a,Nota l'uso di "maggiore ()" nel luogo di comp.
L'opposto di maggiore () è inferiore (), che è il valore predefinito (ascendente) e non deve essere digitato.
Ordinare un intervallo in ordine decrescente
Un intervallo può essere ordinato in ordine decrescente e in ordine crescente. Il seguente codice ordina il 4th al 9th elemento senza includere il 9th elemento; e discendente.
Ordina (VTR.inizio () + 3, vtr.inizio () + 8, maggioreIl vettore con l'intervallo scelto, ordinato in ordine decrescente, è:
Z, x, c, v, n, m, b, a, s, d,Funzione di confronto personalizzata
Il seguente programma ha una funzione di confronto personalizzata per l'ordinamento ascendente:
#includereLa funzione per fare il confronto è chiamata confronto. Restituisce un bool. Ha due parametri, A e B, dello stesso tipo, del tipo di elemento vettoriale. Restituisce vero se a è inferiore a b e falso altrimenti. Il nome di questa funzione è il terzo argomento della chiamata di funzione ordina (). In questo programma, il confronto è lo stesso di meno (). Alcuni altri nomi invece di confrontare possono essere usati.
L'elenco non desiderato è:
Z, x, c, v, b, n, m, a, s, dL'elenco ordinato è:
A, B, C, D, M, N, S, V, X, Z,Naturalmente la funzione di confronto personalizzata può essere utilizzata per un intervallo. Il seguente programma illustra questo:
#includereL'elenco non desiderato è:
Z, x, c, v, b, n, m, a, s, dL'elenco ordinato è:
Z, x, c, a, b, m, n, v, s, d,La funzione di confronto può essere codificata per la discendenza. Il seguente programma illustra questo:
#includereBasta cambiare (a b).
L'elenco non desiderato è:
Z, x, c, v, b, n, m, a, s, dL'elenco ordinato è:
Z, x, v, s, n, m, d, c, b, a,La funzione di confronto personalizzata può essere utilizzata per un intervallo, in ordine decrescente. Il seguente programma illustra questo:
#includereL'elenco non desiderato è:
Z, x, c, v, b, n, m, a, s, dIl vettore con l'intervallo scelto, ordinato in ordine decrescente, è:
Z, x, c, v, n, m, b, a, s, d,Altri tipi di dati
Altri tipi di dati possono essere ordinati usando i loro tipi. Ad esempio, se il tipo di dati INT deve essere ordinato, "INT" verrebbe utilizzato per creare il vettore e nella funzione di confronto integrata o personalizzata. Se il tipo di dati è in una libreria, l'intestazione della libreria deve essere inclusa nel programma, come per il caso della stringa sottostante:
#includereL'elenco non desiderato è:
Ze, xe, ce, ve, be, ne, me, ae, se, deL'elenco ordinato è:
Ze, xe, ve, se, ne, me, de, ce, be, ae,Conclusione
C ++ viene fornito con la libreria dell'algoritmo che ha una funzione di ordinamento (). Questa funzione prende due o tre argomenti nel suo uso normale. Il primo argomento è in cui l'elenco vettoriale, il tipo dovrebbe iniziare. Il secondo argomento è in cui l'elenco vettoriale, il tipo dovrebbe terminare. Il terzo argomento determina se l'ordinamento deve essere eseguito in ordine crescente o in ordine decrescente.