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

C++ প্রোগ্রাম: বাইনারি সার্চ দিয়ে দুটি সোর্টেড অ্যারের মেডিয়ান বের করা


আমরা বাইনারি সার্চ অ্যাপ্রোচ ব্যবহার করে দুটি সোর্টেড অ্যারের মেডিয়ান বের করার একটি C++ প্রোগ্রাম বিকাশ করব।

অ্যালগরিদম
শুরু
  median() ফাংশন যা দুটি অ্যারে এবং প্রতিটি অ্যারের শুরু এবং শেষ ইন্ডেক্স আর্গুমেন্ট হিসেবে নেয়:
    A) প্রথমে অ্যারে দৈর্ঘ্য ক্যালকুলেট করুন: e1 - s1, যেখানে e1 এবং s1 হল শেষ এবং শুরু ইন্ডেক্স।
    B) যদি দৈর্ঘ্য 2 বা 1 হয়, জোড় বা বিজোড় দৈর্ঘ্য অনুযায়ী অ্যারেগুলোর মেডিয়ান ক্যালকুলেট করে রেজাল্ট প্রিন্ট করুন।
    C) চেক করুন যদি দুটি ইনডিভিজুয়াল মেডিয়ান সমান হয়, তবে রেজাল্ট প্রিন্ট করুন।
    D) যদি উপরের দুটি কন্ডিশন সত্য হয় তবে চেক করুন যদি m1 > m2 হয়, তবে কম্বাইন্ড মেডিয়ান হবে প্রথম অ্যারের প্রথম نصفে বা দ্বিতীয় অ্যারের দ্বিতীয় نصفে।
    E) যদি m1 < m2 হয়, তবে কম্বাইন্ড মেডিয়ান হবে প্রথম অ্যারের দ্বিতীয় نصفে বা দ্বিতীয় অ্যারের প্রথম نصفে।
    F) আপডেট করা শুরু এবং শেষ ইন্ডেক্স সহ median() রিকার্সিভলি কল করুন।
শেষ
উদাহরণ কোড
#include 
using namespace std;

void median(float a1[], int s1, int e1, float a2[], int s2, int e2) {
    float m1, m2;
    if ((e1 - s1 + 1) % 2 == 0) {
        if (e1 - s1 == 1) {
            m1 = ((a1[s1] < a2[s2] ? a1[s1] : a2[s2]) + (a1[e1] > a2[e2] ? a1[e1] : a2[e2])) / 2;
            cout << m1; return;
        }
        m1 = (a1[(e1+s1)/2] + a1[(e1+s1)/2+1]) / 2;
        m2 = (a2[(e2+s2)/2] + a2[(e2+s2)/2+1]) / 2;
        if (m1 == m2) { cout << m1; return; }
        else {
            if (m1 > m2) median(a1, s1, (e1+s1)/2+1, a2, (e2+s2)/2, e2);
            else median(a1, (e1+s1)/2, e1, a2, s2, (e2+s2)/2+1);
        }
    } else {
        if (e1 - s1 == 0) {
            m1 = (a1[s1] + a2[s2]) / 2; cout << m1; return;
        }
        m1 = a1[(e1+s1)/2]; m2 = a2[(e2+s2)/2];
        if (m1 == m2) { cout << m1; return; }
        else {
            if (m1 > m2) median(a1, s1, (e1+s1)/2, a2, (e2+s2)/2, e2);
            else median(a1, (e1+s1)/2, e1, a2, s2, (e2+s2)/2);
        }
    }
    return;
}

int main() {
    int n1, n2, i;
    cout << "\nEnter the number of elements for 1st array: "; cin >> n1;
    float a1[n1];
    for (i = 0; i < n1; i++) { cout << "Enter element for 1st array" << i+1 << ": "; cin >> a1[i]; }
    cout << "\nEnter the number of elements for 2nd array: "; cin >> n2;
    float a2[n2];
    for (i = 0; i < n2; i++) { cout << "Enter element for 2nd array " << i+1 << ": "; cin >> a2[i]; }
    cout << "Median is "; median(a1, 0, n1-1, a2, 0, n2-1);
    return 0;
}
আউটপুট
Enter the number of elements for 1st array: 5
Enter element for 1st array1: 6
Enter element for 1st array2: 7
Enter element for 1st array3: 9
Enter element for 1st array4: 10
Enter element for 1st array5: 11
Enter the number of elements for 2nd array: 5
Enter element for 2nd array 1: 60
Enter element for 2nd array 2: 70
Enter element for 2nd array 3: 90
Enter element for 2nd array 4: 100
Enter element for 2nd array 5: 110
Median is 35
  1. C++ ব্যবহার করে এলিপসের এরিয়া বের করা

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

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

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