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

शेल सॉर्ट

शेल सॉर्टिंग तकनीक इंसर्शन सॉर्ट पर आधारित है। इंसर्शन सॉर्ट में कभी-कभी हमें किसी आइटम को सही स्थान पर इन्सर्ट करने के लिए बड़े ब्लॉक को शिफ्ट करने की आवश्यकता होती है। शेल सॉर्ट का उपयोग करके, हम बड़ी संख्या में शिफ्टिंग से बच सकते हैं। सॉर्टिंग एक विशिष्ट अंतराल के साथ की जाती है। प्रत्येक पास के बाद, अंतराल को छोटे अंतराल बनाने के लिए कम किया जाता है।

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

  • टाइम कॉम्प्लेक्सिटी: बेस्ट केस के लिए O(n log n), और अन्य मामलों के लिए यह गैप सीक्वेंस पर निर्भर करता है।
  • स्पेस कॉम्प्लेक्सिटी: O(1)

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

इनपुट: अनसॉर्टेड लिस्ट: 23 56 97 21 35 689 854 12 47 66
आउटपुट: सॉर्टिंग से पहले ऐरे: 23 56 97 21 35 689 854 12 47 66
सॉर्टिंग के बाद ऐरे: 12 21 23 35 47 56 66 97 689 854

एल्गोरिदम

shellSort(array, size)

इनपुट: डेटा का एक ऐरे, और ऐरे में कुल संख्या
आउटपुट: सॉर्टेड ऐरे

Begin
    for gap := size / 2, जब gap > 0 और gap को gap / 2 से अपडेट किया जाता है do
        for j := gap to size - 1 do
            for k := j - gap to 0, gap वैल्यू से घटाएं do
                if array[k + gap] >= array[k]
                    break
                else
                    swap array[k + gap] with array[k]
            done
        done
    done
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 shellSort(int *arr, int n) {
    int gap, j, k;
    for(gap = n / 2; gap > 0; gap = gap / 2) {
        // प्रारंभ में gap = n/2, gap/2 से घट रहा है
        for(j = gap; j < n; j++) {
            for(k = j - gap; k >= 0; k -= gap) {
                if(arr[k + gap] >= arr[k])
                    break;
                else
                    swapping(arr[k + gap], arr[k]);
            }
        }
    }
}

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);
    shellSort(arr, n);
    cout << "सॉर्टिंग के बाद ऐरे: ";
    display(arr, n);
}

आउटपुट

एलिमेंट्स की संख्या दर्ज करें: 10
एलिमेंट्स दर्ज करें: 23 56 97 21 35 689 854 12 47 66
सॉर्टिंग से पहले ऐरे: 23 56 97 21 35 689 854 12 47 66
सॉर्टिंग के बाद ऐरे: 12 21 23 35 47 56 66 97 689 854

  1. - जावास्क्रिप्ट में रेडिक्स सॉर्ट

    रेडिक्स सॉर्ट एल्गोरिदम पूर्णांकों को बकेट्स में वितरित करता है जो किसी संख्या के महत्वपूर्ण अंक या मान (रेडिक्स) पर आधारित होता है। रेडिक्स ऐरे के मानों की संख्या प्रणाली पर आधारित होता है। आइए देखें कि इसे कैसे लागू किया जा सकता है। उदाहरण function radixSort(arr) {    // अधिकतम संख्या ख

  1. JavaScript Sort() मेथड JavaScript Sort() मेथड

    JavaScript Sort() मेथड का उपयोग ऐरे को सॉर्ट करने के लिए किया जाता है। सॉर्टिंग का क्रम वर्णमाला, न्यूमेरिक, आरोही या अवरोही हो सकता है।उदाहरण<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="

  1. - पायथन प्रोग्राम: शेल सॉर्ट लागू करें

    जब शेल सॉर्ट लागू करने की आवश्यकता होती है, तो एक फ़ंक्शन परिभाषित किया जाता है, और यह एक सूची और सूची की लंबाई को आर्ग्युमेंट्स के रूप में लेता है। इस सूची को एक विशिष्ट संख्या में तत्वों तक क्रमबद्ध किया जाता है, जहां तत्वों की संख्या सबसे बड़ा मान होता है। यह तब तक किया जाता है जब तक तत्वों की सं