Cara Mengisih Tatasusunan dengan qsort() dalam C

Cara Mengisih Tatasusunan Dengan Qsort Dalam C



Isih ialah operasi asas dalam pengaturcaraan komputer, dan ia melibatkan penyusunan koleksi data dalam susunan tertentu. Salah satu cara untuk mengisih tatasusunan elemen dalam C ialah menggunakan qsort() fungsi, yang merupakan sebahagian daripada perpustakaan standard. Fungsi ini mengambil tatasusunan, saiznya dan fungsi perbandingan sebagai argumen dan mengisih tatasusunan dalam tertib menaik secara lalai.

Garis panduan ini menggambarkan pengisihan tatasusunan menggunakan qsort() berfungsi dalam C dan juga membantu anda memahaminya dengan kod contoh C.

qsort() dalam C

Perpustakaan standard C memudahkan kami dengan qsort() fungsi yang hanya digunakan untuk menyusun tatasusunan. Ia adalah fungsi yang sangat dioptimumkan dan pantas yang boleh beroperasi dengan mana-mana tatasusunan jenis data.







Fail Pengepala menggunakan qsort() dalam C

The qsort() kaedah ditakrifkan di dalam stdlib.h fail header, yang mesti ditakrifkan sebelum melaksanakan qsort() dalam program C.



#include

Pengisytiharan qsort()

Pengisytiharan daripada qsort() fungsi adalah seperti berikut:



batal qsort ( batal * asas , bilangan_elemen , saiz_elemen , fungsi_perbandingan )

Parameter Fungsi qsort().

Parameter bagi qsort() fungsi ialah:





asas: Tuding kepada elemen pertama tatasusunan yang hendak diisih.

bilangan_elemen: Bilangan elemen dalam tatasusunan untuk diisih.



saiz_elemen: Saiz dalam bait setiap elemen dalam tatasusunan.

fungsi_perbandingan: Penunjuk kepada fungsi perbandingan yang mentakrifkan susunan unsur.

Apakah Fungsi Perbandingan dalam qsort()

Fungsi perbandingan mengambil dua parameter, kedua-dua jenis const void*, yang menunjuk kepada elemen yang dibandingkan. Fungsi harus mengembalikan integer kurang daripada, sama dengan, atau lebih besar daripada 0, bergantung pada sama ada elemen pertama harus diisih sebelum, pada kedudukan yang sama, atau selepas elemen kedua, masing-masing.

Bagaimana qsort Berfungsi dalam C

The qsort() fungsi berfungsi dengan cara berikut:

Catatan: Di sini kita sedang mempertimbangkan satu int arr[] = {5, 2, 8, 3, 1, 9};

1: Pada mulanya, fungsi qsort akan dipanggil dengan parameter berikut:

qsort ( arr , 6 , saiz ( int ) , fungsi_perbandingan ) ;

dengan arr ialah penunjuk kepada tatasusunan, 6 ialah bilangan elemen dalam tatasusunan, sizeof(int) ialah saiz setiap elemen dalam tatasusunan, dan comparison_function ialah fungsi yang menentukan susunan unsur-unsur itu diisih.

2: Fungsi qsort memilih elemen pangsi. Katakan ia memilih 3 sebagai pangsi.

3: Fungsi qsort membahagikan tatasusunan kepada dua sub-tatasusunan: {2, 1} dan {5, 8, 9}. Sub-array pertama mengandungi elemen yang kurang daripada atau sama dengan pangsi, dan sub-array kedua mengandungi elemen yang lebih besar daripada pangsi.

4: Fungsi qsort secara rekursif memanggil dirinya sendiri pada setiap sub-tatasusunan.

5: Fungsi qsort memilih pangsi untuk setiap sub-tatasusunan. Katakan ia memilih 1 dan 8 sebagai pangsi.

6: Fungsi qsort membahagikan setiap sub-tatasusunan kepada dua lagi sub-tatasusunan, dan secara rekursif memanggil dirinya sendiri pada setiap sub-tatasusunan ini.

7: Fungsi qsort menggabungkan sub-tatasusunan yang diisih kembali ke dalam tatasusunan tunggal yang diisih: {1, 2} dan {5, 8, 9} menjadi {1, 2, 5, 8, 9}.

8: Keseluruhan tatasusunan yang diisih dikembalikan.

Pelaksanaan qsort dalam Pengaturcaraan C

Kod berikut menunjukkan pelaksanaan qsort berfungsi dalam pengaturcaraan C.

#include

#include

int bandingkan ( const batal * a1 , const batal * b1 )

{

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

}

int utama ( )

{

int i = 0 , pada satu = 6 ;

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

qsort ( tatasusunan , pada satu , saiz ( int ) , bandingkan ) ;

printf ( 'Elemen Susunan yang diisih menggunakan qsort() ialah : ' ) ;

untuk ( i = 0 ; i < pada satu ; i ++ ) {

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

kembali 0 ;

}

Dalam kod di atas, pertama sekali fungsi bandingkan dibuat dengan dua parameter a1 dan b1 . Kemudian pelaksanaan bermula dari main(). Dalam perkara utama, kita memulakan dua pembolehubah integer sebagai i=0 dan num=6. Kemudian kami mengisytiharkan tatasusunan dengan enam elemen sebagai {5, 2, 8, 3, 1, 9} . Selepas ini qsort() mempunyai tiga parameter jenis tatasusunan, parameter num memberitahu jumlah elemen tatasusunan, sizeof(int) merujuk kepada jumlah saiz tatasusunan, dan bandingkan digunakan untuk membandingkan elemen tatasusunan satu demi satu. Kemudian cetak tatasusunan yang diisih menggunakan printf() fungsi dalam C.

Pengeluaran

Kesimpulan

qsort ialah fungsi yang berkuasa dalam pengaturcaraan C untuk menyusun tatasusunan apa-apa jenis. Ia menggunakan algoritma quicksort untuk mengisih elemen dalam tertib menaik atau menurun berdasarkan fungsi perbandingan. Panduan di atas menunjukkan kepada anda cara mudah untuk melaksanakan qsort dalam pengaturcaraan C dengan kerja langkah demi langkah qsort algoritma.