Nwlapcug.com


Come utilizzare la funzione di ordinamento rapido in C++ nella matrice di numeri interi

"Ordinamento rapido" è un algoritmo di ordinamento che viene eseguito in n * log (n) tempo, che lo rende molto efficiente per l'ordinamento di grandi insiemi di dati. Utilizza un approccio divide et impera che divide in modo efficiente set di dati per lavorare contemporaneamente su più componenti. La libreria standard C++ fornisce una funzione che implementa l'algoritmo di ordinamento rapido. L'ordinamento di un elenco di numeri interi con ordinamento rapido è semplice quando si utilizza questa implementazione della libreria standard dell'algoritmo.

Istruzioni

1

Includere l'intestazione di libreria standard "stdlib. h". Questa intestazione contiene l'implementazione di ordinamento rapido, cui si accede chiamando la funzione "qsort":

includono < stdlib. h > 2

Creare la funzione di confronto. La funzione di confronto accetta due argomenti di tipo "void *", che è necessario eseguire il cast su un tipo di dati specifico e poi confrontati. Se il primo elemento è minore del secondo, un valore negativo deve essere restituito da questa funzione. Se il primo elemento è maggiore del secondo, restituire un valore positivo. Se entrambi gli elementi sono uguali, restituire zero:

int CompareIntegers (const void arg1, const void arg2)

{

int val1 = *(int *) arg1;

int val2 = *(int *) arg2;

if(val1 &lt; val2)

{

return -1;

}

else if(val1 > val2)

{

return 1;

}

// if we got here, both elements are equal

return 0;

}

3

Nel codice, chiamare la funzione qsort. La funzione qsort accetta quattro argomenti: un puntatore all'array da ordinare, il numero di elementi nella matrice, la dimensione di ogni elemento nella matrice, la funzione di confronto.

ordinare la matrice di valori integer

qsort (arrayToSort, sizeInBytes, sizeof (int), CompareIntegers);

Consigli & Avvertenze

  • La funzione di confronto può essere modificata per prendere qualsiasi tipo di dati. Utilizzare questa funzionalità per ordinare le matrici di strutture, classi o qualsiasi oggetto che è possibile scrivere codice.
  • La funzione qsort può anche essere utilizzata con i contenitori STL. Non è strettamente necessario utilizzare matrici dinamiche.
  • Assicurarsi che la matrice di essere ordinato è stato correttamente inizializzata e riempita con i valori. Una matrice creata in modo non corretto può causare eccezioni di riferimento null.
  • Assicurarsi che il numero di elementi fornito alla funzione qsort sia accurato. Un valore non accurato può comportare una matrice parzialmente indifferenziata o un segmentation fault.
  • Assicurarsi che la dimensione dell'elemento fornita di qsort sia accurata. Una dimensione di elemento imprecisa può portare a difetti di segmentazione e corruzione di memoria.