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

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. परिणामी सरणी लौटाएं

C++ उदाहरण

#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 = 0, j = 0, k = 0;
    while (i < n1 && j < n2) {
        if (arr1[i] < arr2[j]) {
            result[k++] = arr1[i++];
        } else {
            result[k++] = arr2[j++];
        }
    }
    while (i < n1) result[k++] = arr1[i++];
    while (j < n2) result[k++] = arr2[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, 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 13 19
Final sorted array: 5 9 10 13 15 17 19 20
  1. - C# में दो सॉर्टेड ऐरे को मर्ज करना

    दो सॉर्टेड ऐरे को मर्ज करना दो सॉर्टेड ऐरे को मर्ज करने के लिए, पहले दो सॉर्टेड ऐरे सेट करें: 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]); li

  1. - C# में दो सॉर्टेड ऐरे को लिस्ट में मर्ज करना

    दो सॉर्टेड ऐरे को लिस्ट में मर्ज करना दो सॉर्टेड ऐरे सेट करें: 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]); list.Add(array2[i]); } ToArray() से वापस ऐरे

  1. - पायथन में heapq का उपयोग करके दो सॉर्टेड ऐरे को मर्ज करना

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