Bildirim
void qsort(void *base, size_t num, size_t size, int (*compar)(const void*, const void*));
Açıklama
İlk eleman adresi base parametresi ile gösterilen, boyutu num parametre değeri kadar ve her bir eleman boyutu size parametre değeri kadar olan bir dizinin elemanlarını, sıralamayı şeklini compar fonksiyonu ile belirleyerek, sıraya dizer.
Parametreler
base: Sıralanacak dizinin ilk elemanının adresini gösterir.
num: Base parametresi ile gösterilen dizinin eleman sayısını gösterir.
size: Base parametresi ile gösterilen dizinin her bir elemanının boyutunu gösterir.
compar: Dizinin iki elemanını karşılaştıran fonksiyonun işaretçisidir.
Bu fonksiyon iki parametreyi karşılaştırır.
Fonksiyon aşağıdaki değerlerden birini geri döndürür.
Döndürülen değer | Anlamı |
---|---|
<0 | İlk parametre değeri ikinci parametre değerinden önce gelir. |
0 | İlk parametre değeri ikinci parametre değeri ile aynıdır. |
>0 | İlk parametre değeri ikinci parametre değerinden sonra gelir. |
Dönüş değeri
Yok.
Örnek
#include <stdio.h>
#include <stdlib.h>
int compfunc(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
int main (void) {
int idizi[] = { 14, 35, 4, 17, 5, 9, 43, 11, 21, 16 };
int id;
int num = sizeof(idizi) / sizeof(idizi[0]);
for (id=0; id<num; id++) {
printf("%d ", idizi[id]);
}
qsort (idizi, num, sizeof (int), compfunc);
printf("\n");
for (id=0; id<num; id++) {
printf("%d ", idizi[id]);
}
return 0;
}
Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:
14 35 4 17 5 9 43 11 21 16 4 5 9 11 14 16 17 21 35 43
Yukarıdaki program, 10 boyutlu int bir dizi içinde bulunan değişken değerlerini önce doğrudan sonra da qsort() fonksiyonu ile sıralayarak ekrana yazar.