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

C++ ব্যবহার করে দুটি সর্টেড অ্যারে মার্জ করা

সমস্যা বিবরণ

দুটি সর্টেড অ্যারে দেওয়া আছে। দুটিকে একসাথে মার্জ করে একটি সর্টেড অ্যারে বানানোর ফাংশন লিখুন।

Arr1[] = {10, 15, 17, 20}
Arr2[] = {5, 9, 13, 19}
Result[] = {5, 9, 10, 13, 15, 17, 19, 20}

এলগরিদম

1. দুটি অ্যারে ট্রাভার্স করুন
   1.1. যদি arr1[i] < arr2[j] হয়
       1.1.1. arr[i]-কে নতুন অ্যারেতে যোগ করুন
       1.1.2. 'i' এবং রেজাল্ট অ্যারের ইনডেক্স 'k' বাড়ান
   1.2. যদি arr2[j] < arr1[i] হয়
       1.2.1. arr[j]-কে নতুন অ্যারেতে যোগ করুন
       1.2.2. 'j' এবং রেজাল্ট অ্যারের ইনডেক্স 'k' বাড়ান
2. দুটি অ্যারে খালি না হওয়া পর্যন্ত পিয়াজ পুনরাবৃত্তি করুন
3. ফলাফল অ্যারে রিটার্ন করুন

উদাহরণ কোড

#include <iostream>
#define SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
using namespace std;

void mergeSortedArrays(int *arr1, int n1, int *arr2, int n2, int *result) {
    int i, j, k;
    i = 0; j = 0; k = 0;
    while (i < n1 && j < n2) {
        if (arr1[i] < arr2[j]) {
            result[k] = arr1[i];
            ++k; ++i;
        } else {
            result[k] = arr2[j];
            ++k; ++j;
        }
    }
    while (i < n1) {
        result[k] = arr1[i];
        ++k; ++i;
    }
    while (j < n2) {
        result[k] = arr2[j];
        ++k; ++j;
    }
}

void dispalyArray(int *arr, int n) {
    for (int i = 0; i < n; ++i) {
        cout << arr[i] << " ";
    }
    cout << endl;
}

int main() {
    int arr1[] = {10, 15, 17, 20};
    int arr2[] = {5, 9, 7, 13, 19};
    int result[SIZE(arr1) + SIZE(arr2)];
    cout << "First sorted array:" << endl;
    dispalyArray(arr1, SIZE(arr1));
    cout << "Second sorted array:" << endl;
    dispalyArray(arr2, SIZE(arr2));
    mergeSortedArrays(arr1, SIZE(arr1), arr2, SIZE(arr2), result);
    cout << "Final sorted array:" << endl;
    dispalyArray(result, SIZE(result));
    return 0;
}

আউটপুট

প্রোগ্রাম কম্পাইল ও এক্সিকিউট করলে নিচের আউটপুট পাওয়া যাবে:

First sorted array: 10 15 17 20
Second sorted array: 5 9 7 13 19
Final sorted array: 5 9 7 10 13 15 17 19 20
  1. C#-এ AddRange দিয়ে দুটি অ্যারে মার্জ করা

  2. C#-এ দুটি সর্টেড অ্যারে মার্জ করা

  3. C#-এ দুটি সর্টেড অ্যারে মার্জ করে লিস্টে রূপান্তর

  4. পাইথনে heapq.merge() ব্যবহার করে দুটি সর্টেড লিস্ট মার্জ করা