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

मर्ज सॉर्ट

मर्ज सॉर्ट तकनीक डिवाइड एंड कन्कर तकनीक पर आधारित है। हम पूरे डेटासेट को छोटे भागों में विभाजित करते हैं और उन्हें सॉर्टेड ऑर्डर में एक बड़े भाग में मर्ज करते हैं। यह सबसे खराब मामलों के लिए भी बहुत प्रभावी है क्योंकि इस एल्गोरिदम की सबसे खराब स्थिति के लिए भी कम टाइम कॉम्प्लेक्सिटी है।

मर्ज सॉर्ट तकनीक की जटिलता

  • टाइम कॉम्प्लेक्सिटी: सभी मामलों के लिए O(n log n)
  • स्पेस कॉम्प्लेक्सिटी: O(n)

इनपुट और आउटपुट

इनपुट: अनसॉर्टेड लिस्ट: 14 20 78 98 20 45
आउटपुट: सॉर्टिंग से पहले ऐरे: 14 20 78 98 20 45
सॉर्टिंग के बाद ऐरे: 14 20 20 45 78 98

एल्गोरिदम

merge(array, left, middle, right)

इनपुट: डेटासेट ऐरे, लेफ्ट, मिडल और राइट इंडेक्स

आउटपुट: मर्ज की गई लिस्ट

Begin
    nLeft := m - left + 1
    nRight := right - m
    लेफ्ट और राइट ऐरे को क्रमशः nLeft और nRight साइज के साथ परिभाषित करें
    for i := 0 to nLeft do
        leftArr[i] := array[left + i]
    done
    for j := 0 to nRight do
        rightArr[j] := array[middle + j + 1]
    done
    i := 0, j := 0, k := left
    while i < nLeft AND j < nRight do
        if leftArr[i] <= rightArr[j] then
            array[k] = leftArr[i]
            i := i + 1
        else
            array[k] = rightArr[j]
            j := j + 1
        k := k + 1
    done
    while i < nLeft do
        array[k] := leftArr[i]
        i := i + 1
        k := k + 1
    done
    while j < nRight do
        array[k] := rightArr[j]
        j := j + 1
        k := k + 1
    done
End

mergeSort(array, left, right)

इनपुट: डेटा का एक ऐरे, और ऐरे की निचली और ऊपरी सीमा

आउटपुट: सॉर्टेड ऐरे

Begin
    if left < right then
        mid := left + (right - left) / 2
        mergeSort(array, left, mid)
        mergeSort(array, mid + 1, right)
        merge(array, left, mid, right)
End

उदाहरण

#include <iostream>
using namespace std;

void swapping(int &a, int &b) {
    // a और b की सामग्री को स्वैप करें
    int temp;
    temp = a;
    a = b;
    b = temp;
}

void display(int *array, int size) {
    for(int i = 0; i < size; i++)
        cout << array[i] << " ";
    cout << endl;
}

void merge(int *array, int l, int m, int r) {
    int i, j, k, nl, nr;
    // लेफ्ट और राइट सब-ऐरे का साइज
    nl = m - l + 1; nr = r - m;
    int larr[nl], rarr[nr];
    // लेफ्ट और राइट सब-ऐरे भरें
    for(i = 0; i < nl; i++)
        larr[i] = array[l + i];
    for(j = 0; j < nr; j++)
        rarr[j] = array[m + 1 + j];
    i = 0; j = 0; k = l;
    // अस्थायी ऐरे को रियल ऐरे में मर्ज करें
    while(i < nl && j < nr) {
        if(larr[i] <= rarr[j]) {
            array[k] = larr[i];
            i++;
        } else {
            array[k] = rarr[j];
            j++;
        }
        k++;
    }
    while(i < nl) {
        // लेफ्ट ऐरे में अतिरिक्त एलिमेंट
        array[k] = larr[i];
        i++; k++;
    }
    while(j < nr) {
        // राइट ऐरे में अतिरिक्त एलिमेंट
        array[k] = rarr[j];
        j++; k++;
    }
}

void mergeSort(int *array, int l, int r) {
    int m;
    if(l < r) {
        int m = l + (r - l) / 2;
        // पहले और दूसरे ऐरे को सॉर्ट करें
        mergeSort(array, l, m);
        mergeSort(array, m + 1, r);
        merge(array, l, m, r);
    }
}

int main() {
    int n;
    cout << "एलिमेंट्स की संख्या दर्ज करें: ";
    cin >> n;
    int arr[n]; // दिए गए एलिमेंट्स की संख्या के साथ ऐरे बनाएं
    cout << "एलिमेंट्स दर्ज करें:" << endl;
    for(int i = 0; i < n; i++) {
        cin >> arr[i];
    }
    cout << "सॉर्टिंग से पहले ऐरे: ";
    display(arr, n);
    mergeSort(arr, 0, n - 1); // (n-1) अंतिम इंडेक्स के लिए
    cout << "सॉर्टिंग के बाद ऐरे: ";
    display(arr, n);
}

आउटपुट

एलिमेंट्स की संख्या दर्ज करें: 6
एलिमेंट्स दर्ज करें: 14 20 78 98 20 45
सॉर्टिंग से पहले ऐरे: 14 20 78 98 20 45
सॉर्टिंग के बाद ऐरे: 14 20 20 45 78 98

  1. C भाषा में मर्ज सॉर्ट तकनीक समझाना C भाषा में मर्ज सॉर्ट तकनीक समझाना

    सॉर्टिंग एलिमेंट्स को आरोही (या अवरोही) क्रम में व्यवस्थित करने की प्रक्रिया है। सॉर्टिंग के प्रकार C भाषा पांच सॉर्टिंग तकनीक प्रदान करती है: बबल सॉर्ट (या) एक्सचेंज सॉर्ट सिलेक्शन सॉर्ट इन्सर्शन सॉर्ट (या) लीनियर सॉर्ट क्विक सॉर्ट (या) पार्टीशन एक्सचेंज सॉर्ट मर्ज सॉर्ट (या) एक्सटर्नल सॉर्ट मर

  1. पायथन प्रोग्राम: मर्ज सॉर्ट पायथन प्रोग्राम: मर्ज सॉर्ट

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक सरणी दी गई है, हमें मर्ज सॉर्ट की अवधारणा का उपयोग करके इसे क्रमबद्ध करना है। यहां हम अधिकतम तत्व को अंत में रखते हैं। यह तब तक दोहराया जाता है जब तक सरणी क्रमबद्ध नहीं हो जाती। उदाहरण # मर्ज फ़ंक्शन def merge(arr, l, m, r)

  1. Ruby में मर्ज सॉर्ट मास्टर करें: एक चरण-दर-चरण मार्गदर्शिका Ruby में मर्ज सॉर्ट मास्टर करें: एक चरण-दर-चरण मार्गदर्शिका

    यह Ruby के साथ विभिन्न सॉर्टिंग एल्गोरिदम को लागू करने पर एक श्रृंखला का भाग 3 है। भाग 1 ने बबल सॉर्ट का पता लगाया, और भाग 2 ने सिलेक्शन सॉर्ट का पता लगाया। जैसा कि हमने इस श्रृंखला के पिछले पोस्ट्स में चर्चा की है, डेटा को कैसे सॉर्ट किया जाए यह समझना किसी भी सॉफ्टवेयर इंजीनियर के टूलकिट का अभ