Computer Programming - সি দিয়ে ডেটা স্ট্রাকচার (DSA using C) - সার্চিং এলগরিদম (Searching Algorithms in C)
409

Binary Search একটি দ্রুত সার্চিং পদ্ধতি যা সন্নিবেশিত (sorted) তালিকার উপর কাজ করে। এটি মূলত দুটি উপায়ে বাস্তবায়িত হয়: Recursive এবং Iterative। নিচে উভয় পদ্ধতির বিস্তারিত আলোচনা এবং C প্রোগ্রামে উদাহরণ দেওয়া হলো।


১. Recursive Binary Search

১.১ Recursive Binary Search এর ধারণা

Recursive Binary Search হল এমন একটি পদ্ধতি যেখানে একটি ফাংশন নিজেকে কল করে। এটি তালিকার মাঝের উপাদানকে পরীক্ষা করে এবং লক্ষ্য উপাদানটির অবস্থান খুঁজে বের করতে চেষ্টা করে। যদি লক্ষ্য উপাদানটি না পাওয়া যায়, তবে বাম বা ডান দিকের সাব-অ্যারেতে পুনরায় কল করে।

১.২ C প্রোগ্রামে Recursive Binary Search উদাহরণ

#include <stdio.h>

// Recursive function for binary search
int recursiveBinarySearch(int arr[], int left, int right, int target) {
    if (left > right) {
        return -1; // Base case: target not found
    }

    int mid = left + (right - left) / 2; // Find the middle index

    if (arr[mid] == target) {
        return mid; // Return index if target is found
    } else if (arr[mid] < target) {
        return recursiveBinarySearch(arr, mid + 1, right, target); // Search in right half
    } else {
        return recursiveBinarySearch(arr, left, mid - 1, target); // Search in left half
    }
}

int main() {
    int arr[] = {10, 20, 30, 40, 50}; // Sorted array
    int size = sizeof(arr) / sizeof(arr[0]);
    int target = 30; // Element to search for

    int result = recursiveBinarySearch(arr, 0, size - 1, target);
    if (result != -1) {
        printf("Element found at index %d\n", result);
    } else {
        printf("Element not found\n");
    }

    return 0;
}

২. Iterative Binary Search

২.১ Iterative Binary Search এর ধারণা

Iterative Binary Search হল একটি পদ্ধতি যেখানে একটি লুপের মাধ্যমে লক্ষ্য উপাদানটি খোঁজা হয়। এখানে কোন পুনরাবৃত্তি নেই, বরং লুপ ব্যবহার করে উপাদানগুলি পরীক্ষা করা হয়।

২.২ C প্রোগ্রামে Iterative Binary Search উদাহরণ

#include <stdio.h>

// Iterative function for binary search
int iterativeBinarySearch(int arr[], int size, int target) {
    int left = 0;
    int right = size - 1;

    while (left <= right) {
        int mid = left + (right - left) / 2; // Find the middle index

        if (arr[mid] == target) {
            return mid; // Return index if target is found
        }
        if (arr[mid] < target) {
            left = mid + 1; // Search in the right half
        } else {
            right = mid - 1; // Search in the left half
        }
    }
    return -1; // Return -1 if target is not found
}

int main() {
    int arr[] = {10, 20, 30, 40, 50}; // Sorted array
    int size = sizeof(arr) / sizeof(arr[0]);
    int target = 30; // Element to search for

    int result = iterativeBinarySearch(arr, size, target);
    if (result != -1) {
        printf("Element found at index %d\n", result);
    } else {
        printf("Element not found\n");
    }

    return 0;
}

৩. Recursive এবং Iterative Binary Search এর তুলনা

বৈশিষ্ট্যRecursive Binary SearchIterative Binary Search
কোডের পরিষ্কারতাসাধারণত কোড পরিষ্কার এবং সহজকোড কিছুটা জটিল হতে পারে
স্ট্যাক ব্যবহারস্ট্যাক ফ্রেম ব্যবহার করে; স্ট্যাক ওভারফ্লোর ঝুঁকি থাকেস্ট্যাক ব্যবহার করে না
পারফরম্যান্সকিছুক্ষেত্রে কম কার্যকরী হতে পারেসাধারণত দ্রুত এবং কম মেমরি ব্যবহার করে
বেস কেসবেস কেসের প্রয়োজনকোন বেস কেসের প্রয়োজন নেই
Content added By
Promotion

Are you sure to start over?

Loading...