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

सी ++ का उपयोग करके दो क्रमबद्ध सरणी मर्ज करें।

समस्या कथन

2 क्रमबद्ध सरणियों की सूची दी गई। दिए गए दो क्रमबद्ध सरणियों को एक में मिलाने के लिए एक फ़ंक्शन लिखें

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

एल्गोरिदम

1. Traverse both array
   1.1. If arr1[i] < arr2[j]
      1.1.1. Add arr[i] to new array
      1.1.2. Increment ‘i’ and index of result array ‘k’
   1.2. If arr2[i] < arr1[j]
      1.2.1. Add arr[j] to new array
      1.2.2. Increment ‘j’ and index of result array ‘k’
2. Repeat procedure until both arrays are exhausted
3. Return resultant array

उदाहरण

#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. सी # में दो क्रमबद्ध सरणी मर्ज करें

    दो सॉर्ट किए गए सरणियों को मर्ज करने के लिए, पहले दो क्रमबद्ध सरणियों को सेट करें - int[] array1 = { 1, 2 }; int[] array2 = { 3, 4 }; अब, इसे एक सूची में जोड़ें और मर्ज करें - var list = new List<int>(); for (int i = 0; i < array1.Length; i++) {    list.Add(array1[i]);   &nb

  1. सी # का उपयोग कर एक सूची में दो क्रमबद्ध सरणी मर्ज करें

    दो क्रमबद्ध सरणियों को एक सूची में मिलाने के लिए, पहले दो क्रमबद्ध सरणियाँ सेट करें - int[] array1 = { 1, 2 }; int[] array2 = { 3, 4 }; इसे एक सूची में जोड़ें और मर्ज करें - var list = new List<int>(); for (int i = 0; i < array1.Length; i++) {    list.Add(array1[i]);    

  1. हेपैक का उपयोग करके पायथन में दो क्रमबद्ध सरणियों को मिलाएं?

    इस खंड में हम देखेंगे कि पायथन में हेपैक मॉड्यूल का उपयोग करके दो क्रमबद्ध सूचियों को कैसे मर्ज किया जा सकता है। एक उदाहरण के रूप में, यदि सूची 1 =[10, 20, 30, 40] और सूची 2 =[100, 200, 300, 400, 500], तो विलय के बाद यह सूची 3 =[10, 20, 30, 40, 100,] लौटाएगा। 200, 300, 400, 500] इस कार्य को करने के