কম্পিউটার টিউটোরিয়াল

C-এ qsort()-এর কমপারেটর ফাংশন (Comparator Function)


C-তে `qsort()` ফাংশন পাওয়া যায়। এটি কুইকসোর্ট (quicksort) টেকনিক ব্যবহার করে অ্যারের সোর্টিং করে। এই ফাংশনে একটি কমপারেটর ফাংশন (comparator function) পাস করতে হয়। এই কমপারেটর ফাংশন দুটি আর্গুমেন্ট নেয়, সেগুলো তুলনা করে তাদের রিলেটিভ অর্ডার (relative order) নির্ধারণ করে। এই দুটি আর্গুমেন্ট পয়েন্টার, এবং টাইপ কাস্ট করা হয় `const void*` হিসেবে। সিনট্যাক্স:

int comparator(const void* p1, const void* p2);

রিটার্ন ভ্যালু তিন ধরনের হতে পারে:

  • ০ এর চেয়ে কম: p1 দ্বারা নির্দেশিত এলিমেন্ট দ্বিতীয়টির আগে যাবে।
  • ০ এর সমান: দুটি ভ্যালু সমান।
  • ০ এর চেয়ে বেশি: p1 দ্বারা নির্দেশিত এলিমেন্ট দ্বিতীয়টির পরে যাবে।

উদাহরণ

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct {
    char title[50];
    int pages;
    float price;
} book;

int compareBook(const void* a, const void* b) { // qsort-এর জন্য সঠিক সিগনেচার
    book* b1 = (book*)a;
    book* b2 = (book*)b;
    if (b1->price < b2->price) return -1;
    if (b1->price > b2->price) return 1;
    return 0;
}

int main() {
    int i;
    book book_arr[5];
    strcpy(book_arr[0].title, "C Programming");
    book_arr[0].pages = 260; book_arr[0].price = 450;
    strcpy(book_arr[1].title, "DBMS Guide");
    book_arr[1].pages = 850; book_arr[1].price = 775;
    strcpy(book_arr[2].title, "Learn C++");
    book_arr[2].pages = 350; book_arr[2].price = 520;
    strcpy(book_arr[3].title, "Data Structures");
    book_arr[3].pages = 380; book_arr[3].price = 430;
    strcpy(book_arr[4].title, "Learn Python");
    book_arr[4].pages = 500; book_arr[4].price = 300;

    qsort(book_arr, 5, sizeof(book_arr[0]), compareBook);

    for(i = 0; i < 5; i++) {
        printf("%s\t\t%d\t\t%f\n", book_arr[i].title, book_arr[i].pages, book_arr[i].price);
    }
}

আউটপুট

Learn Python        500         300.000000
Data Structures     380         430.000000
C Programming       260         450.000000
Learn C++           350         520.000000
DBMS Guide          850         775.000000
  1. C++-এ log() ফাংশন

  2. C++-এ swap() ফাংশন

  3. PHP pi() ফাংশন

  4. Python Pandas: DataFrame tail() ফাংশন ব্যবহার করা