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

दिए गए जटिलता प्रतिबंध के साथ क्विक सॉर्ट लागू करने के लिए C++ प्रोग्राम


क्विक सॉर्ट डिवाइड-एंड-कंकर पर आधारित है। इस एल्गोरिदम की औसत समय जटिलता O(n log n) है लेकिन सबसे खराब स्थिति की जटिलता O(n^2) है। सबसे खराब स्थिति की संभावना को कम करने के लिए यहां क्विकसॉर्ट को रैंडमाइजेशन का उपयोग करके लागू किया गया है।

एल्गोरिदम

partition(int a[], int l,int h)

शुरुआत    pivot = h    Index = l    start = l and end = h    while start < end do       while a[start] <= pivot AND start < end do          start = start +1       done       while a[end] > pivot do          end = end – 1       done       if start < end then          swap a[start] with a[end]       done       a[low] = a[end]       a[end] = pivot    return end अंत

RandomPivotPartition(int a[], int l, int h)

शुरुआत    n = rand()    pivot = l + n%(h-l+1);    Swap a[h] with a[pivot]    return Partition(a, l, h) अंत

QuickSort(int a[], int l, int h)

शुरुआत    int pindex;    If (l<h)       pindex = RandomPivotPartition(a, l, h)       QuickSort(a, l, pindex-1)       QuickSort(a, pindex+1, h)    return 0 अंत

उदाहरण कोड

#include<iostream> #include<cstdlib> using namespace std; void swap(int *a, int *b) {    int temp;    temp = *a;    *a = *b;    *b = temp; } int Partition(int a[], int l, int h) {    int pivot, index, i;    index = l;    pivot = h;    for(i = l; i < h; i++) {       if(a[i] < a[pivot]) {          swap(&a[i], &a[index]);          index++;       }    }    swap(&a[pivot], &a[index]);    return index; } int RandomPivotPartition(int a[], int l, int h) {    int pvt, n, temp;    n = rand();    pvt = l + n%(h-l+1);    swap(&a[h], &a[pvt]);    return Partition(a, l, h); } int QuickSort(int a[], int l, int h) {    int pindex;    if(l < h) {       pindex = RandomPivotPartition(a, l, h);       QuickSort(a, l, pindex-1);       QuickSort(a, pindex+1, h);    }    return 0; } int main() {    int n, i;    cout<<"\nसॉर्ट किए जाने वाले डेटा एलिमेंट की संख्या दर्ज करें: ";    cin>>n;    int arr[n];    for(i = 0; i < n; i++) {       cout<<"एलिमेंट "<<i+1<<": ";       cin>>arr[i];    }    QuickSort(arr, 0, n-1);    cout<<"\nसॉर्टेड डेटा ";    for (i = 0; i < n; i++)       cout<<"->"<<arr[i];    return 0; }

आउटपुट

सॉर्ट किए जाने वाले डेटा एलिमेंट की संख्या दर्ज करें: 4 एलिमेंट 1 दर्ज करें: 3 एलिमेंट 2 दर्ज करें: 4 एलिमेंट 3 दर्ज करें: 7 एलिमेंट 4 दर्ज करें: 6 सॉर्टेड डेटा ->3->4->6->7

  1. - C++ प्रोग्राम: बबल सॉर्ट लागू करना

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

  1. - C++ प्रोग्राम: बकेट सॉर्ट लागू करना

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

  1. - C++ प्रोग्राम: रेडिक्स सॉर्ट लागू करना

    रेडिक्स सॉर्ट गैर-तुलनात्मक सॉर्टिंग एल्गोरिदम है। यह सॉर्टिंग एल्गोरिदम पूर्णांक कुंजियों पर काम करता है उन अंकों को समूहित करके जो समान स्थिति और मान साझा करते हैं। रेडिक्स एक संख्या प्रणाली का आधार है। जैसा कि हम जानते हैं कि दशमलव प्रणाली में रेडिक्स या आधार 10 है। इसलिए कुछ दशमलव संख्याओं को स