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

C++-এ রিকারসিভ লিনিয়ার সার্চ দিয়ে অ্যারেয়ে এলিমেন্ট খুঁজুন


একটি পূর্ণসংখ্যার অ্যারে দেওয়া থাকলে, রিকারসিভ লিনিয়ার সার্চ দিয়ে একটি নির্দিষ্ট মান খুঁজে বের করতে হবে। না পেলে -1 ফেরত দিন।

উদাহরণ

ইনপুট − Arr[] = {11,43,24,50,93,26,78}, val = 26

আউটপুট − 26 found at index 5

ব্যাখ্যা − অ্যারে ০ থেকে ৬ পর্যন্ত ইনডেক্স। প্রথমে ০ ও ৬ চেক করা হয়, তারপর ১ ও ৫, সেখানে ২৬ মিলে যায়।

ইনপুট − Arr[] = {11,43,24,50,93,26,78}, val = 66

আউটপুট − 66 is not present

ব্যাখ্যা − প্রথম ও শেষ ইনডেক্স থেকে চেক করে প্রথম ইনডেক্স শেষ ইনডেক্সের চেয়ে বড় হলে সার্চ বন্ধ।

প্রোগ্রামে ব্যবহৃত পদ্ধতি

অ্যারে দুটি প্রান্ত থেকে লিনিয়ারলি ট্রাভার্স করা হয়। প্রথম ও শেষ এলিমেন্ট চেক করে না পেলে রিকারসিভভাবে পরবর্তী জোড়া চেক করা হয়।

  • ইনপুট অ্যারে Ar[] ও সার্চ মান val নিন।

  • searchRec(int arr[], int start, int end, int num) ফাংশন অ্যারে, প্রথম ও শেষ ইনডেক্স ও সার্চ মান নিয়ে ইনডেক্স ফেরত দেয়।

  • result = -99 ইনিশিয়ালাইজ করুন।

  • যদি arr[start] == num হয়, result = start।

  • যদি arr[end] == num হয়, result = end।

  • যদি start > end হয়, result = -1।

  • যদি result != -99 হয়, ফেরত দিন, অন্যথায় searchRec(arr, start+1, end-1, num) কল করুন।

  • main-এ ফলাফল অনুযায়ী প্রিন্ট করুন।

উদাহরণ কোড

#include <bits/stdc++.h>
using namespace std;

int searchRec(int arr[], int start, int end, int num){
    int result = -99;
    if (start > end){
        result = -1;
    }
    if (arr[start] == num){
        result = start;
    }
    if (arr[end] == num){
        result = end;
    }
    if (result != -99){
        return result;
    }
    return searchRec(arr, start + 1, end - 1, num);
}

int main(){
    int Arr[] = {11,43,22,56,33,26,78};
    int len = sizeof(Arr) / sizeof(Arr[0]);
    int val = 56;
    int pos = searchRec(Arr, 0, len - 1, val);
    if (pos == -1){
        cout << val << " is not present";
    }
    else{
        cout << val << " found at index " << pos;
    }
    return 0;
}

আউটপুট

উপরের কোড রান করলে নিচের আউটপুট পাওয়া যাবে:

56 found at index 3
  1. বাইনারি সার্চ ব্যবহার করে অ্যারেতে সর্বাধিক উপাদান খুঁজে বের করার C++ প্রোগ্রাম

  2. লিনিয়ার সার্চ ব্যবহার করে অ্যারেতে ন্যূনতম উপাদান খুঁজে বের করার C++ প্রোগ্রাম

  3. অ্যারেতে সবচেয়ে বড় এলিমেন্ট (Largest Element) বের করার C++ প্রোগ্রাম

  4. অ্যারেতে রিকার্সিভলি লিনিয়ার সার্চ করার জাভা প্রোগ্রাম