Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में विभिन्न आकारों के k सॉर्ट किए गए सरणियों को मर्ज करें

मान लीजिए कि हमारे पास अलग-अलग k सॉर्ट किए गए सरणियाँ हैं। हमें इन सरणियों को मर्ज करना होगा और क्रमबद्ध परिणाम प्रदर्शित करना होगा।

इसलिए, यदि इनपुट k =3 जैसा है और सरणियाँ {2, 4}, {3, 5, 7}, {1, 10, 11, 12} हैं, तो आउटपुट 1 2 3 4 5 7 10 11 होगा। 12

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

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

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

    #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. सी / सी ++ में बहुआयामी सरणी

      C/C++ में, बहुआयामी सरणी को सरल शब्दों में सरणियों के सरणी के रूप में परिभाषित किया गया है। बहुआयामी सरणियों में डेटा को सारणीबद्ध रूप में (पंक्ति प्रमुख क्रम में) संग्रहीत किया जाता है। निम्न आरेख 3 x 3 x 3 आयाम वाले बहुआयामी सरणी के लिए स्मृति आवंटन रणनीति दिखाता है। एल्गोरिदम Begin    

    1. मैं सी ++ में सरणी का उपयोग कैसे करूं?

      एक सरणी सन्निहित स्मृति स्थानों में रखे गए समान प्रकार के तत्वों की एक श्रृंखला है जिसे एक अद्वितीय पहचानकर्ता में एक अनुक्रमणिका जोड़कर व्यक्तिगत रूप से संदर्भित किया जा सकता है। C++ में किसी सरणी का उपयोग करने के लिए, आपको पहले इसे घोषित करना होगा, उदाहरण के लिए, int arr[10]; यह आकार 10 के प्रकार

    1. जावा में k सॉर्ट किए गए सरणियों को मर्ज करें

      हमें सरणियों की एक n संख्या दी गई है, मान लीजिए कि हम पूर्णांक प्रकार के तीन सरणियाँ अर्थात् arr1[], arr2[] और arr3[] लेते हैं। कार्य सभी दिए गए पूर्णांक सरणियों को इस तरह से मर्ज करना है कि परिणामी सरणी केवल रनटाइम में क्रमबद्ध हो। उदाहरण के साथ समझते हैं इनपुट - इंट a[]={21,22,23,24}; इंट बी[