Custom Sorting এবং Searching Techniques

Computer Programming - সি স্ট্যান্ডার্ড লাইব্রেরি রেফারেন্স (C Standard Library Reference) Sorting এবং Searching Functions (সর্টিং এবং সার্চিং ফাংশনস) |
235
235

Custom Sorting এবং Searching Techniques (কাস্টম সর্টিং এবং সার্চিং টেকনিক্স)

সি প্রোগ্রামিংয়ে কাস্টম সর্টিং এবং কাস্টম সার্চিং টেকনিক্স ব্যবহার করে আপনি নির্দিষ্ট শর্ত অনুযায়ী ডেটা সর্ট এবং সার্চ করতে পারেন। সাধারণ সর্টিং এবং সার্চিং ফাংশন যেমন qsort() এবং bsearch() ব্যবহার করা হলেও, কখনও কখনও আপনার নির্দিষ্ট কাস্টম শর্তে ডেটা সর্ট বা সার্চ করতে হতে পারে। সেক্ষেত্রে, কাস্টম কম্পারেটর ফাংশন এবং কাস্টম সার্চ পদ্ধতি ব্যবহার করতে পারেন।

নিচে কাস্টম সর্টিং এবং সার্চিং টেকনিক্সের বিস্তারিত আলোচনা করা হলো।


কাস্টম সর্টিং টেকনিক্স

১. কাস্টম কম্পারেটর ফাংশন ব্যবহার করে সর্টিং

সি ভাষায় qsort() ফাংশনটি জেনেরিক সর্টিং ফাংশন যা কাস্টম কম্পারেটর ফাংশন ব্যবহার করে কোনো অ্যারের এলিমেন্টকে সর্ট করতে সহায়ক। আপনি যখন নির্দিষ্ট কোনো শর্তে সর্ট করতে চান, তখন একটি কাস্টম কম্পারেটর ফাংশন তৈরি করতে পারেন।

উদাহরণ: কাস্টম সংখ্যা সর্টিং

ধরা যাক, আমরা একটি অ্যারে সর্ট করতে চাই, তবে সর্টিংটি হবে উল্টোভাবে অর্থাৎ বড় সংখ্যাগুলি আগে আসবে (ডিসেনডিং অর্ডার)।

সিঙ্কট্যাক্স:

int compare(const void *a, const void *b);

উদাহরণ কোড:

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

// কাস্টম কম্পারেটর ফাংশন
int compare(const void *a, const void *b) {
    return (*(int *)b - *(int *)a);  // Descending order (বড় থেকে ছোট)
}

int main() {
    int arr[] = {12, 5, 3, 8, 1};
    int n = sizeof(arr) / sizeof(arr[0]);

    // qsort ব্যবহার করে সর্ট করা
    qsort(arr, n, sizeof(int), compare);

    printf("Sorted array in descending order: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}

Output:
Sorted array in descending order: 12 8 5 3 1

এখানে compare() ফাংশনটি qsort() ফাংশনের জন্য কাস্টম কম্পারেটর হিসেবে কাজ করেছে এবং সংখ্যাগুলিকে বড় থেকে ছোটে সর্ট করা হয়েছে।

২. স্ট্রিং ভিত্তিক কাস্টম সর্টিং

ধরা যাক, আমাদের একটি স্ট্রিং এর অ্যারে আছে এবং আমরা স্ট্রিংগুলিকে তাদের দৈর্ঘ্য অনুযায়ী সর্ট করতে চাই (ছোট থেকে বড় বা বড় থেকে ছোট)। এখানে strlen() ফাংশন ব্যবহার করতে হবে।

উদাহরণ: স্ট্রিং দৈর্ঘ্য অনুযায়ী সর্টিং

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

// কাস্টম কম্পারেটর ফাংশন
int compare(const void *a, const void *b) {
    return strlen((const char *)a) - strlen((const char *)b);  // String length comparison
}

int main() {
    char *arr[] = {"apple", "kiwi", "banana", "grape"};
    int n = sizeof(arr) / sizeof(arr[0]);

    // qsort ব্যবহার করে সর্ট করা
    qsort(arr, n, sizeof(char *), compare);

    printf("Sorted array based on string length: ");
    for (int i = 0; i < n; i++) {
        printf("%s ", arr[i]);
    }

    return 0;
}

Output:
Sorted array based on string length: kiwi grape apple banana

এখানে স্ট্রিংগুলির দৈর্ঘ্য অনুযায়ী তাদের সর্ট করা হয়েছে, ছোট স্ট্রিং প্রথমে আসছে।


কাস্টম সার্চিং টেকনিক্স

১. কাস্টম সার্চ ফাংশন

যখন আপনি একটি অ্যারেতে কাস্টম সার্চ করতে চান, তখন আপনি bsearch() ফাংশনের পরিবর্তে নিজের সার্চ ফাংশন তৈরি করতে পারেন। এটি সাধারণত তখনই দরকার হয় যখন সার্চিংয়ের শর্ত কাস্টম হয় (যেমন, কোন নির্দিষ্ট বৈশিষ্ট্য অনুযায়ী সার্চ করা)।

উদাহরণ: কাস্টম ইন্টিজার সার্চ

ধরা যাক, আমাদের একটি অ্যারে আছে এবং আমরা একটি নির্দিষ্ট শর্তের অধীনে একটি মান খুঁজতে চাই (যেমন, অ্যারের মধ্যে এমন একটি মান খুঁজতে যা ৩ দ্বারা বিভাজ্য।)

সিঙ্কট্যাক্স:

int custom_search(int arr[], int n, int target);

উদাহরণ কোড:

#include <stdio.h>

int custom_search(int arr[], int n, int target) {
    for (int i = 0; i < n; i++) {
        if (arr[i] % target == 0) {  // Check if divisible by target
            return i;  // Return index
        }
    }
    return -1;  // Return -1 if not found
}

int main() {
    int arr[] = {12, 15, 7, 20, 25};
    int n = sizeof(arr) / sizeof(arr[0]);
    int target = 5;

    int index = custom_search(arr, n, target);
    if (index != -1) {
        printf("Element divisible by %d found at index %d\n", target, index);
    } else {
        printf("No element divisible by %d found\n", target);
    }

    return 0;
}

Output:
Element divisible by 5 found at index 0

এখানে custom_search() ফাংশনটি এমন একটি মান খুঁজে বের করেছে যা ৫ দ্বারা বিভাজ্য।


২. কাস্টম বাইনারি সার্চ

যদি অ্যারে সর্ট করা থাকে এবং আপনি নির্দিষ্ট শর্তে বাইনারি সার্চ করতে চান, তবে একটি কাস্টম বাইনারি সার্চ ফাংশন তৈরি করা যেতে পারে। এখানে bsearch() ফাংশনের ব্যবহার না করে বাইনারি সার্চ কাস্টম শর্তে করা হয়েছে।

উদাহরণ: কাস্টম বাইনারি সার্চ

ধরা যাক, আপনি এমন একটি অ্যারে খুঁজতে চান যেখানে যেকোনো পজিটিভ সংখ্যা ১০ এর থেকে বড় হতে হবে এবং সেই মানটি সঠিক স্থান থেকে বের করা হবে।

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

int compare(const void *a, const void *b) {
    return (*(int *)a - *(int *)b);  // Ascending order comparison
}

int binary_search(int arr[], int size, int key) {
    int low = 0, high = size - 1;

    while (low <= high) {
        int mid = (low + high) / 2;

        if (arr[mid] == key) {
            return mid;
        } else if (arr[mid] < key) {
            low = mid + 1;
        } else {
            high = mid - 1;
        }
    }
    return -1;
}

int main() {
    int arr[] = {2, 5, 8, 10, 15};
    int size = sizeof(arr) / sizeof(arr[0]);

    qsort(arr, size, sizeof(int), compare);

    int key = 10;
    int index = binary_search(arr, size, key);

    if (index != -1) {
        printf("Element %d found at index %d\n", key, index);
    } else {
        printf("Element not found\n");
    }

    return 0;
}

Output:
Element 10 found at index 3

এখানে কাস্টম বাইনারি সার্চ ফাংশনটি সর্ট করা অ্যারেতে নির্দিষ্ট মান খুঁজে বের করেছে।


সারসংক্ষেপ

টেকনিকবর্ণনা
কাস্টম কম্পারেটর ফাংশনqsort() ব্যবহার করে কাস্টম শর্তে সর্ট করা (যেমন: বড় থেকে ছোট, স্ট্রিং দৈর্ঘ্য অনুযায়ী)
কাস্টম সার্চ ফাংশনঅ্যারে বা লিস্টে কাস্টম শর্ত অনুযায়ী সার্চ (যেমন: শর্ত পূরণকারী মান খোঁজা)
কাস্টম বাইনারি সার্চবাইনারি সার্চের মাধ্যমে সর্ট করা অ্যারেতে কাস্টম শর্তে দ্রুত অনুসন্ধান

সি প্রোগ্রামে কাস্টম সর্টিং এবং সার্চিং ফাংশনগুলো ডেটা ম্যানিপুলেশন এবং ফলস্বরূপ ফলাফল পেতে খুবই কার্যকরী। এই ফাংশনগুলোর মাধ্যমে আপনি আপনার নির্দিষ্ট প্রয়োজন অনুসারে ডেটা ম্যানেজমেন্ট সহজে করতে পারেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion