qsort ile sıralama

09:39

void qsort(
void *base, 
size_t nmemb, 
size_t size,
int(*compar)(const void *, const void *)
);


  1. parametre: sıralanacak dizinin başlangıç adresi
  2. parametre: sıralanacak dizinin boyutu
  3. parametre: verilen dizideki elemanların byte uzunluğu
  4. parametre: karşılaştırma fonksiyonunun adresi

qsort fonksiyonu quick sort algoritmasına göre verilen diziyi karşılaştırma fonksiyonun çalışma mantığına uygun olarak sıralar. Burada karşılaştırma yapılacak fonksiyonu dikkatli yazmamız gerekmektedir. Bizim tarafımızda en önemli iş yükü karşılaştırma fonksiyonunu yazmaktır.



Aşağıdaki programdaki sıralama fonksiyonu ise iki void * adresi struct LESSON* haline getirip struct içindeki ders isimlerine göre strcmp fonksiyonu kullanılarak karşılaştırma işlemi gerçekleştirilir.


Sıralama sonuçlarının ekran görüntüsü aşağıdaki gibidir:


Karşılaştırma işleminin başına - koymak sıralamayı tersine çevirecektir.


int bir diziyi sıralamak için ise aşağıdaki gibi bir program yazılabilir.


Aşağıdaki karşılaştırma fonksiyonu iki void * adresi int * 'a dönüştürüp içeriğini karşılaştırmaktır.

Benzer karşılaştırma işlemi aşağıdaki gibidir.