qsort
Melakukan pengurutan cepat. Versi fungsi ini yang lebih aman tersedia; lihat qsort_s
.
Sintaks
void qsort(
void *base,
size_t number,
size_t width,
int (__cdecl *compare )(const void *, const void *)
);
Parameter
base
Awal array target.
number
Ukuran array dalam elemen.
width
Ukuran elemen dalam byte.
compare
Penunjuk ke rutinitas yang disediakan pengguna yang membandingkan dua elemen array dan mengembalikan nilai yang menentukan hubungan mereka.
Keterangan
Fungsi ini qsort
mengimplementasikan algoritma pengurutan number
cepat untuk mengurutkan array elemen, masing-masing width
byte. Argumen base
adalah penunjuk ke dasar array yang akan diurutkan. qsort
menimpa array ini dengan menggunakan elemen yang diurutkan.
qsort
compare
memanggil rutinitas satu atau beberapa kali selama pengurutan, dan meneruskan penunjuk ke dua elemen array pada setiap panggilan. Jika compare
menunjukkan dua elemen sama, urutannya dalam array yang diurutkan yang dihasilkan tidak ditentukan.
compare(const void *elem1, const void *elem2);
Rutinitas membandingkan elemen dan mengembalikan salah satu nilai berikut.
Membandingkan nilai pengembalian fungsi | Deskripsi |
---|---|
< 0 | elem1 Kurang elem2 |
0 | elem1 setara dengan elem2 |
> 0 | elem1 lebih besar dari elem2 |
Array diurutkan dalam urutan yang meningkat, seperti yang didefinisikan oleh fungsi perbandingan. Untuk mengurutkan array dalam urutan yang menurun, balikkan rasa "lebih besar dari" dan "kurang dari" dalam fungsi perbandingan.
Fungsi ini memvalidasi parameternya. Jika compare
atau number
adalah NULL
, atau jika base
adalah NULL
dan number
bukan nol, atau jika width
kurang dari nol, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi akan kembali, dan errno
diatur ke EINVAL
.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Persyaratan
Rutin | Header yang diperlukan |
---|---|
qsort |
<stdlib.h> dan <search.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// crt_qsort.c
// arguments: every good boy deserves favor
/* This program reads the command-line
* parameters and uses qsort to sort them. It
* then displays the sorted arguments.
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int compare( const void *arg1, const void *arg2 );
int main( int argc, char **argv )
{
int i;
/* Eliminate argv[0] from sort: */
argv++;
argc--;
/* Sort remaining args using Quicksort algorithm: */
qsort( (void *)argv, (size_t)argc, sizeof( char * ), compare );
/* Output sorted list: */
for( i = 0; i < argc; ++i )
printf( " %s", argv[i] );
printf( "\n" );
}
int compare( const void *arg1, const void *arg2 )
{
/* Compare all of both strings: */
return _stricmp( * ( char** ) arg1, * ( char** ) arg2 );
}
boy deserves every favor good
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk