Paano Pagbukud-bukurin ang mga Array na may qsort() sa C

Paano Pagbukud Bukurin Ang Mga Array Na May Qsort Sa C



Ang pag-uuri ay isang pangunahing operasyon sa computer programming, at ito ay nagsasangkot ng pag-aayos ng isang koleksyon ng data sa isang tiyak na pagkakasunud-sunod. Ang isang paraan upang pagbukud-bukurin ang isang hanay ng mga elemento sa C ay ang paggamit ng qsort() function, na bahagi ng karaniwang library. Ang function na ito ay tumatagal ng array, laki nito, at comparison function bilang mga argumento at inaayos ang array sa pataas na pagkakasunod-sunod bilang default.

Ang patnubay na ito ay naglalarawan ng pag-uuri ng mga array gamit ang qsort() function sa C at tinutulungan ka rin na maunawaan ito sa pamamagitan ng mga halimbawang code ng C.

qsort() sa C

Pinapadali tayo ng C standard library qsort() function na ginagamit lamang upang ayusin ang mga array. Ito ay isang lubos na na-optimize at mabilis na function na maaaring gumana sa anumang array ng uri ng data.







Header-File gamit ang qsort() sa C

Ang qsort() ang pamamaraan ay tinukoy sa loob ng stdlib.h header file, na dapat tukuyin bago ipatupad qsort() sa isang C program.



#include

Deklarasyon ng qsort()

Ang deklarasyon ng qsort() function ay ang mga sumusunod:



walang bisa qsort ( walang bisa * base , bilang_ng_elemento , laki_ng_elemento , comparison_function )

Mga parameter ng qsort() Function

Ang mga parameter ng qsort() function ay:





base: Pointer sa unang elemento ng array na pagbukud-bukurin.

number_of_elements: Bilang ng mga elemento sa array na pagbukud-bukurin.



laki_ng_elemento: Sukat sa bytes ng bawat elemento sa array.

comparison_function: Pointer sa isang function ng paghahambing na tumutukoy sa pagkakasunud-sunod ng mga elemento.

Ano ang Comparison Function sa qsort()

Ang pagpapaandar ng paghahambing ay tumatagal ng dalawang parameter, parehong may uri ng const void*, na tumuturo sa mga elementong inihahambing. Ang function ay dapat magbalik ng isang integer na mas mababa sa, katumbas ng, o mas malaki sa 0, depende sa kung ang unang elemento ay dapat pagbukud-bukurin bago, sa parehong posisyon, o pagkatapos ng pangalawang elemento, ayon sa pagkakabanggit.

Paano Gumagana ang qsort sa C

Ang qsort() gumagana ang function sa sumusunod na paraan:

Tandaan: Dito ay isinasaalang-alang namin ang isang int arr[] = {5, 2, 8, 3, 1, 9};

1: Sa una, ang qsort function ay tatawagin gamit ang mga sumusunod na parameter:

qsort ( arr , 6 , sukat ng ( int ) , comparison_function ) ;

kung saan ang arr ay ang pointer sa array, ang 6 ay ang bilang ng mga elemento sa array, sizeof(int) ay ang laki ng bawat elemento sa array, at ang comparison_function ay ang function na tumutukoy sa pagkakasunud-sunod kung saan ang mga elemento ay pinagsunod-sunod.

2: Ang qsort function ay pumipili ng pivot element. Sabihin nating pumipili ito 3 bilang pivot.

3: Hinahati ng qsort function ang array sa dalawang sub-array: {2, 1} at {5, 8, 9}. Ang unang sub-array ay naglalaman ng mga elementong mas mababa sa o katumbas ng pivot, at ang pangalawang sub-array ay naglalaman ng mga elementong mas malaki kaysa sa pivot.

4: Ang qsort function ay recursively na tumatawag sa sarili nito sa bawat isa sa mga sub-array.

5: Ang qsort function ay pumipili ng mga pivot para sa bawat isa sa mga sub-array. Sabihin nating pinipili nito ang 1 at 8 bilang mga pivot.

6: Hinahati ng qsort function ang bawat sub-array sa dalawa pang sub-array, at paulit-ulit na tinatawag ang sarili nito sa bawat isa sa mga sub-array na ito.

7: Pinagsasama ng qsort function ang mga pinagsunod-sunod na sub-array pabalik sa iisang pinagsunod-sunod na array: {1, 2} at {5, 8, 9} naging {1, 2, 5, 8, 9}.

8: Ibinalik ang buong pinagsunod-sunod na array.

Pagpapatupad ng qsort sa C Programming

Ang sumusunod na code ay nagpapakita ng pagpapatupad ng qsort function sa C programming.

#include

#include

int ihambing ( const walang bisa * a1 , const walang bisa * b1 )

{

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

}

int pangunahing ( )

{

int i = 0 , sa isa = 6 ;

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

qsort ( array , sa isa , sukat ng ( int ) , ihambing ) ;

printf ( 'Ang mga pinagsunod-sunod na Elemento ng Array gamit ang qsort() ay : ' ) ;

para sa ( i = 0 ; i < sa isa ; i ++ ) {

printf ( '%d ' , array [ i ] ) ; }

bumalik 0 ;

}

Sa code sa itaas, una ang isang paghahambing na function ay ginawa gamit ang dalawang parameter a1 at b1 . Pagkatapos ay magsisimula ang pagpapatupad mula sa main(). Sa pangunahing, sinisimulan namin ang dalawang integer variable bilang i=0 at num=6. Pagkatapos ay idedeklara namin ang isang array na may anim na elemento bilang {5, 2, 8, 3, 1, 9} . Pagkatapos nito qsort() may tatlong mga parameter ng uri ng array, ang num parameter ay nagsasabi sa kabuuang mga elemento ng isang array, sizeof(int) ay tumutukoy sa kabuuang sukat ng array, at ang paghahambing ay ginagamit upang ihambing ang mga elemento ng array nang paisa-isa. Pagkatapos ay i-print ang pinagsunod-sunod na array gamit ang printf() function sa C.

Output

Konklusyon

qsort ay isang malakas na function sa C programming para sa pag-uuri ng mga array ng anumang uri. Gumagamit ito ng quicksort algorithm upang pagbukud-bukurin ang mga elemento sa pataas o pababang pagkakasunud-sunod batay sa isang function ng paghahambing. Ang gabay sa itaas ay nagpapakita sa iyo ng isang madaling paraan upang ipatupad ang qsort sa C programming na may sunud-sunod na paggawa ng qsort algorithm.