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

সি++-এ ভিন্ন আকারের kটি সোর্টেড অ্যারে মার্জ করা


মান লিইয়ে নিই আমাদের কাছে kটি ভিন্ন সোর্টেড অ্যারে রয়েছে। আমাদের এই অ্যারেগুলোকে মার্জ করে সোর্টেড ফলাফল দেখাতে হবে।

সুতরাং, যদি ইনপুট হয় k = 3 এবং অ্যারেগুলো {2, 4}, {3, 5, 7}, {1, 10, 11, 12}, তবে আউটপুট হবে 1 2 3 4 5 7 10 11 12

সমাধান পদ্ধতি

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:

  • एक जोड़ी टाइप परिभाषित करें जिसका पहला तत्व एक पूर्णांक हो और दूसरा तत्व एक और पूर्णांक जोड़ी हो, इसे ppi नाम दें।
  • एक आउटपुट सरणी op परिभाषित करें
  • एक प्रायोरिटी क्यू q परिभाषित करें
  • i := 0 से आरंभ करें, जब i < arr का आकार, अपडेट करें (i को 1 से बढ़ाएं), करें:
    • (arr[i, 0], {i, 0}) को q में डालें
  • जब q खाली नहीं है, करें:
    • current_element := q का शीर्ष तत्व
    • q से तत्व हटाएं
    • i := current_element से दूसरा तत्व
    • j := current_element से तीसरा तत्व
    • current_element के पहले तत्व को op के अंत में डालें
    • यदि j + 1 < arr[i] का आकार, तो:
      • (arr[i, j+1], {i, j+1}) को q में डालें
  • op लौटाएं

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

#include <bits/stdc++.h> using namespace std; #define ppi pair<int,pair<int,int>> vector<int> merge(vector<vector<int> > arr){    vector<int> op;    priority_queue<ppi, vector<ppi>, greater<ppi> > queue;    for (int i = 0; i < arr.size(); i++)    queue.push({ arr[i][0], { i, 0 } });    while (queue.empty() == false) {       ppi current_element = queue.top();       queue.pop();       int i = current_element.second.first;       int j = current_element.second.second;       op.push_back(current_element.first);       if (j + 1 < arr[i].size())       queue.push({ arr[i][j + 1], { i, j + 1 } });    }    return op; } int main(){    vector<vector<int> > arr{ { 2,4}, { 3,5,7 }, { 1, 10, 11, 12 } };    vector<int> output = merge(arr);    for(int i = 0; i<output.size(); i++)    cout << output[i] << " "; }

इनपुट

{{ 2,4}, { 3,5,7 }, { 1, 10, 11, 12 }}

आउटपुट

1 2 3 4 5 7 10 11 12

  1. সি/সি++-তে মাল্টিডাইমেনশনাল অ্যারে (Multidimensional Arrays)

  2. C++-এ ফাংশনে অ্যারে পাস করা: পয়েন্টার ও রেফারেন্স

  3. C++-এ অ্যারে (Array) ব্যবহার করার পদ্ধতি

  4. জাভাতে Kটি সর্টেড অ্যারে মার্জ করা