Come ordinare gli array con qsort() in C

Come Ordinare Gli Array Con Qsort In C



L'ordinamento è un'operazione fondamentale nella programmazione dei computer e comporta l'organizzazione di una raccolta di dati in un ordine specifico. Un modo per ordinare un array di elementi in C è usare il metodo qsort() funzione, che fa parte della libreria standard. Questa funzione accetta un array, le sue dimensioni e una funzione di confronto come argomenti e ordina l'array in ordine crescente per impostazione predefinita.

Questa linea guida illustra l'ordinamento degli array utilizzando l' qsort() funzione in C e ti aiuta anche a capirlo con i codici di esempio C.

qsort() in C

La libreria standard C ci facilita con qsort() funzione che viene semplicemente utilizzata per ordinare gli array. È una funzione estremamente ottimizzata e veloce che può operare con qualsiasi tipo di dati array.







File di intestazione usando qsort() in C

IL qsort() metodo è definito all'interno del stdlib.h file di intestazione, che deve essere definito prima dell'implementazione qsort() in un programma C.



#include

Dichiarazione di qsort()

La dichiarazione di qsort() funzione è la seguente:



vuoto qsort ( vuoto * base , numero_di_elementi , size_of_element , funzione_comparativa )

Parametri della funzione qsort()

I parametri del qsort() funzione sono:





base: Puntatore al primo elemento dell'array da ordinare.

numero_di_elementi: Numero di elementi nell'array da ordinare.



size_of_element: Dimensione in byte di ogni elemento nell'array.

funzione_di confronto: Puntatore a una funzione di confronto che definisce l'ordine degli elementi.

Cos'è la funzione di confronto in qsort()

La funzione di confronto accetta due parametri, entrambi di tipo const void*, che puntano agli elementi confrontati. La funzione deve restituire un numero intero minore, uguale o maggiore di 0, a seconda che il primo elemento debba essere ordinato rispettivamente prima, nella stessa posizione o dopo il secondo elemento.

Come funziona qsort in C

IL qsort() funzione funziona nel modo seguente:

Nota: Qui stiamo considerando un int arr[] = {5, 2, 8, 3, 1, 9};

1: Inizialmente, la funzione qsort verrà chiamata con i seguenti parametri:

qsort ( arr , 6 , taglia di ( int ) , funzione_comparativa ) ;

dove arr è il puntatore all'array, 6 è il numero di elementi nell'array, sizeof(int) è la dimensione di ogni elemento nell'array e compare_function è la funzione che determina l'ordine in cui gli elementi sono ordinati.

2: La funzione qsort seleziona un elemento pivot. Diciamo che seleziona 3 come perno.

3: La funzione qsort suddivide l'array in due sottoarray: {2, 1} e {5, 8, 9}. Il primo sottoarray contiene elementi minori o uguali al pivot e il secondo sottoarray contiene elementi maggiori del pivot.

4: La funzione qsort richiama se stessa in modo ricorsivo su ciascuno dei sottoarray.

5: La funzione qsort seleziona i pivot per ciascuno dei sottoarray. Diciamo che seleziona 1 e 8 come pivot.

6: La funzione qsort partiziona ciascun sottoarray in altri due sottoarray e si richiama ricorsivamente su ciascuno di questi sottoarray.

7: La funzione qsort combina i sottoarray ordinati in un unico array ordinato: {1, 2} e {5, 8, 9} diventano {1, 2, 5, 8, 9}.

8: Viene restituito l'intero array ordinato.

Implementazione di qsort nella programmazione C

Il codice seguente mostra l'implementazione di qsort funzione nella programmazione C.

#include

#include

int confrontare ( cost vuoto * a1 , cost vuoto * b1 )

{

ritorno ( * ( int * ) a1 - * ( int * ) b1 ) ;

}

int principale ( )

{

int io = 0 , nessuno = 6 ;

int vettore [ ] = { 5 , 2 , 8 , 3 , 1 , 9 } ;

qsort ( vettore , nessuno , taglia di ( int ) , confrontare ) ;

printf ( 'Gli elementi ordinati dell'array usando qsort() sono: ' ) ;

per ( io = 0 ; io < nessuno ; io ++ ) {

printf ( '%D ' , vettore [ io ] ) ; }

ritorno 0 ;

}

Nel codice sopra, in primo luogo viene creata una funzione di confronto con due parametri a1 E b1 . Quindi l'esecuzione inizia da main(). In generale, inizializziamo due variabili intere come i=0 e num=6. Quindi dichiariamo un array con sei elementi come {5, 2, 8, 3, 1, 9} . Dopodichè qsort() hanno tre parametri di tipo array, il parametro num indica gli elementi totali di un array, dimensionedi(int) si riferisce alla dimensione totale dell'array e compare viene utilizzato per confrontare gli elementi dell'array uno per uno. Quindi stampare l'array ordinato utilizzando stampaf() funzione in C.

Produzione

Conclusione

qsort è una potente funzione nella programmazione C per l'ordinamento di array di qualsiasi tipo. Utilizza un algoritmo quicksort per ordinare gli elementi in ordine crescente o decrescente in base a una funzione di confronto. La guida sopra mostra un modo semplice per implementare qsort nella programmazione C con un funzionamento passo-passo di qsort algoritmo.