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

क्विक सॉर्ट

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

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

  • टाइम कॉम्प्लेक्सिटी: बेस्ट और औसत केस के लिए O(n log n), सबसे खराब केस के लिए O(n^2)।
  • स्पेस कॉम्प्लेक्सिटी: O(log n)

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

इनपुट: अनसॉर्टेड लिस्ट: 90 45 22 11 22 50
आउटपुट: सॉर्टिंग से पहले ऐरे: 90 45 22 11 22 50
सॉर्टिंग के बाद ऐरे: 11 22 22 45 50 90

एल्गोरिदम

partition(array, lower, upper)

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

आउटपुट: सही स्थिति में पिवट

Begin
    pivot := array[lower]
    start := lower and end := upper
    while start < end do
        while array[start] <= pivot AND start < end do
            start := start + 1
        done
        while array[end] > pivot do
            end := end - 1
        done
        if start < end then
            swap array[start] with array[end]
        done
    array[lower] := array[end]
    array[end] := pivot
    return end
End

quickSort(array, left, right)

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

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

Begin
    if left < right then
        q = partition(array, left, right)
        quickSort(array, left, q-1)
        quickSort(array, q+1, 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;
}

int partition(int *array, int lower, int upper) {
    // पिवट के लिए सही स्थान ढूंढने के लिए होयर पार्टीशनिंग तकनीक
    int pivot, start, end;
    pivot = array[lower]; // पहला एलिमेंट पिवट के रूप में
    start = lower; end = upper;
    while(start < end) {
        while(array[start] <= pivot && start < end) {
            start++; // स्टार्ट पॉइंटर दाईं ओर जाता है
        }
        while(array[end] > pivot) {
            end--; // एंड पॉइंटर बाईं ओर जाता है
        }
        if(start < end) {
            swap(array[start], array[end]); // छोटे और बड़े एलिमेंट को स्वैप करें
        }
    }
    array[lower] = array[end];
    array[end] = pivot;
    return end;
}

void quickSort(int *array, int left, int right) {
    int q;
    if(left < right) {
        q = partition(array, left, right);
        quickSort(array, left, q - 1); // लेफ्ट सब-ऐरे सॉर्ट करें
        quickSort(array, q + 1, right); // राइट सब-ऐरे सॉर्ट करें
    }
}

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);
    quickSort(arr, 0, n - 1); // (n-1) अंतिम इंडेक्स के लिए
    cout << "सॉर्टिंग के बाद ऐरे: ";
    display(arr, n);
}

आउटपुट

एलिमेंट्स की संख्या दर्ज करें: 6
एलिमेंट्स दर्ज करें: 90 45 22 11 22 50
सॉर्टिंग से पहले ऐरे: 90 45 22 11 22 50
सॉर्टिंग के बाद ऐरे: 11 22 22 45 50 90

  1. - C# में हीप सॉर्ट

    हीप सॉर्ट एक सॉर्टिंग एल्गोरिदम है जो हीप डेटा संरचना का उपयोग करता है। प्रत्येक बार हीप का रूट तत्व यानी सबसे बड़ा तत्व हटा दिया जाता है और एक सरणी में संग्रहीत किया जाता है। इसे सबसे दाएं पत्ते तत्व से बदल दिया जाता है और फिर हीप को पुनर्स्थापित किया जाता है। यह तब तक किया जाता है जब तक हीप में क

  1. - C# में KeyValuePair सूची को सॉर्ट करना

    C# में List<KeyValuePair<TKey, TValue>> को सॉर्ट करने के लिए Sort() मेथड का उपयोग किया जाता है, जिसमें एक कस्टम तुलना डेलीगेट (comparison delegate) प्रदान किया जाता है। उदाहरण: मान (Value) के अनुसार अवरोही क्रम में सॉर्टिंग using System; using System.Collections.Generic; class Program

  1. - इटरेटिव क्विक सॉर्ट के लिए जावा प्रोग्राम

    इटरेटिव क्विक सॉर्ट के लिए जावा प्रोग्राम निम्नलिखित है: उदाहरण public class Demo{ void swap_vals(int arr[], int i, int j){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } int partition(int arr[], int l, int h){ int x = arr[h]; int i