दो ऐरे मर्ज करना
दो सॉर्टेड ऐरे लें और उन्हें मर्ज करके तीसरे सॉर्टेड ऐरे में स्टोर करें (मर्ज सॉर्ट का मर्ज स्टेप)।
लॉजिक
i = 0, j = 0, k = 0;
while(i < n && j < m) {
if(a[i] <= b[j])
c[k++] = a[i++];
else
c[k++] = b[j++];
}
// शेष एलिमेंट्स कॉपी करें
while(i < n) c[k++] = a[i++];
while(j < m) c[k++] = b[j++];
पूर्ण C प्रोग्राम
#include <stdio.h>
#include <stdlib.h>
int main() {
int a[10], b[10], c[20];
int m, n, o, i, j, k, temp;
printf("Enter size of Array1: "); scanf("%d", &n);
printf("Enter size of Array2: "); scanf("%d", &m);
o = m + n;
printf("Enter Array1 elements: ");
for(i = 0; i < n; i++) scanf("%d", &a[i]);
printf("Enter Array2 elements: ");
for(i = 0; i < m; i++) scanf("%d", &b[i]);
// दोनों ऐरे सॉर्ट करें (बबल सॉर्ट)
for(i = 0; i < n; i++)
for(j = 0; j < n-1-i; j++)
if(a[j] > a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; }
for(i = 0; i < m; i++)
for(j = 0; j < m-1-i; j++)
if(b[j] > b[j+1]) { temp = b[j]; b[j] = b[j+1]; b[j+1] = temp; }
printf("Sorted Array1: "); for(i=0;i
आउटपुट
Enter size of Array1: 4 Enter size of Array2: 3 Enter Array1 elements: 1 2 3 4 Enter Array2 elements: 6 8 3 Sorted Array1: 1 2 3 4 Sorted Array2: 3 6 8 Merged array: 1 2 3 3 4 6 8
महत्वपूर्ण नोट
मूल कोड में मर्ज लॉजिक अधूरा था (शेष एलिमेंट्स कॉपी नहीं किए)। सही मर्ज के लिए दो अतिरिक्त while लूप्स आवश्यक हैं।
अन्य मर्ज परिदृश्य
- अनसॉर्टेड ऐरे मर्ज: बस दूसरे को पहले के बाद कॉपी करें (सॉर्टिंग की आवश्यकता नहीं)।
- डुप्लीकेट्स के बिना मर्ज: मर्ज के दौरान समान एलिमेंट्स को एक बार ही कॉपी करें।
- इन-प्लेस मर्ज: अतिरिक्त स्पेस के बिना (जटिल, O(n²) या O(n log n))।