Cum să sortați matrice cu qsort() în C

Cum Sa Sortati Matrice Cu Qsort In C



Sortarea este o operație fundamentală în programarea computerelor și implică aranjarea unei colecții de date într-o anumită ordine. O modalitate de a sorta o matrice de elemente în C este folosirea qsort() funcția, care face parte din biblioteca standard. Această funcție ia ca argumente o matrice, dimensiunea acesteia și o funcție de comparație și sortează matricea în ordine crescătoare în mod implicit.

Acest ghid ilustrează sortarea matricelor folosind qsort() funcția în C și, de asemenea, vă ajută să o înțelegeți prin coduri de exemplu C.

qsort() în C

Biblioteca standard C ne facilitează qsort() funcție care este folosită pur și simplu pentru a sorta matrice. Este o funcție extrem de optimizată și rapidă care poate funcționa cu orice tip de matrice de date.







Antet-Fișier folosind qsort() în C

The qsort() metoda este definită în interiorul stdlib.h fișier antet, care trebuie definit înainte de implementare qsort() într-un program C.



#include

Declarația qsort()

Declarația de qsort() functia este urmatoarea:



gol qsort ( gol * baza , număr_de_elemente , dimensiunea_elementului , funcţie_comparaţie )

Parametrii funcției qsort().

Parametrii qsort() functia sunt:





baza: Indicator către primul element al matricei de sortat.

număr_de_elemente: Numărul de elemente din matrice care urmează să fie sortate.



dimensiunea_elementului: Dimensiunea în octeți a fiecărui element din matrice.

functie_comparatie: Indicator către o funcție de comparație care definește ordinea elementelor.

Ce este funcția de comparație în qsort()

Funcția de comparare ia doi parametri, ambii de tip const void*, care indică elementele comparate. Funcția ar trebui să returneze un număr întreg mai mic, egal cu sau mai mare decât 0, în funcție de dacă primul element trebuie sortat înainte, în aceeași poziție sau, respectiv, după al doilea element.

Cum funcționează qsort în C

The qsort() funcția funcționează în felul următor:

Notă: Aici luăm în considerare un int arr[] = {5, 2, 8, 3, 1, 9};

1: Inițial, funcția qsort va fi apelată cu următorii parametri:

qsort ( arr , 6 , dimensiunea ( int ) , funcţie_comparaţie ) ;

unde arr este indicatorul către matrice, 6 este numărul de elemente din matrice, sizeof(int) este dimensiunea fiecărui element din matrice și comparison_function este funcția care determină ordinea în care sunt sortate elementele.

2: Funcția qsort selectează un element pivot. Să spunem că selectează 3 ca pivot.

3: Funcția qsort împarte matricea în două sub-matrice: {2, 1} și {5, 8, 9}. Prima sub-matrice conține elemente care sunt mai mici sau egale cu pivotul, iar a doua sub-matrice conține elemente care sunt mai mari decât pivotul.

4: Funcția qsort se autoapelează recursiv pe fiecare dintre sub-matrice.

5: Funcția qsort selectează pivoturi pentru fiecare dintre sub-matrice. Să presupunem că selectează 1 și 8 ca pivoți.

6: Funcția qsort împarte fiecare sub-matrice în încă două sub-matrice și se apelează recursiv pe fiecare dintre aceste sub-matrice.

7: Funcția qsort combină sub-matricele sortate înapoi într-o singură matrice sortată: {1, 2} și {5, 8, 9} devin {1, 2, 5, 8, 9}.

8: Se returnează întreaga matrice sortată.

Implementarea qsort în programarea C

Următorul cod arată implementarea qsort funcția în programarea C.

#include

#include

int comparaţie ( const gol * a1 , const gol * b1 )

{

întoarcere ( * ( int * ) a1 - * ( int * ) b1 ) ;

}

int principal ( )

{

int i = 0 , pe unu = 6 ;

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

qsort ( matrice , pe unu , dimensiunea ( int ) , comparaţie ) ;

printf ( 'Elementele sortate ale matricei folosind qsort() sunt: ​​' ) ;

pentru ( i = 0 ; i < pe unu ; i ++ ) {

printf ( „%d” , matrice [ i ] ) ; }

întoarcere 0 ;

}

În codul de mai sus, în primul rând se realizează o funcție de comparare cu doi parametri a1 și b1 . Apoi execuția începe de la main(). În principal, inițializam două variabile întregi ca i=0 și num=6. Apoi declarăm o matrice cu șase elemente ca {5, 2, 8, 3, 1, 9} . Dupa asta qsort() au trei parametri de tip matrice, parametrul num spune elementele totale ale unei matrice, dimensiunea(int) se referă la dimensiunea totală a matricei, iar compararea este folosită pentru a compara elementele matricei unul câte unul. Apoi tipăriți matricea sortată folosind printf() funcția în C.

Ieșire

Concluzie

qsort este o funcție puternică în programarea C pentru sortarea tablourilor de orice tip. Utilizează un algoritm de sortare rapidă pentru a sorta elementele în ordine crescătoare sau descrescătoare pe baza unei funcții de comparație. Ghidul de mai sus vă arată o modalitate ușoară de a implementa qsort în programarea C cu o lucru pas cu pas qsort algoritm.