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

सी ++ में रिकर्सिव चयन क्रमबद्ध करें

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

चयन सॉर्ट एल्गोरिथम

  • int arr[5]={ 5,4,2,1,3 };

  • इंट आई, जे;

  • अनुक्रमणिका i=0 से i<सरणी आकार -1

    . तक ट्रैवर्स
    • अनुक्रमणिका j=i+1 से सरणी आकार - 1

      . तक ट्रैवर्स
    • सबसे छोटा ढूंढें और उसके index.pos को संगृहीत करें

  • एरर[i]

    . के साथ पाए गए इंडेक्स पॉज़ पर तत्व स्वैप करें
  • अंत

पुनरावर्ती चयन सॉर्ट

  • न्यूनतम तत्व की अनुक्रमणिका खोजें

  • यदि पाया गया सबसे छोटा तत्व सूचकांक सरणी आकार के बराबर है, तो वापस लौटें।

  • अन्यथा वर्तमान तत्व को सबसे छोटे तत्व से बदलें

  • क्रमबद्ध तत्वों को छोड़कर शेष सरणी के लिए उपरोक्त चरणों को पुनरावर्ती रूप से निष्पादित करें

उदाहरण

इनपुट - एआर [] ={ 5,7,2,3,1,4}; लंबाई=6

आउटपुट - क्रमबद्ध सरणी:1 2 3 4 5 7

स्पष्टीकरण -

First Pass :-
5 7 2 3 1 4 → swap → 1 2 7 3 5 4
1 2 7 3 5 4 → no swap
1 2 7 3 5 4 → swap → 1 2 3 7 5 4
1 2 3 7 5 4 → swap → 1 2 3 4 5 7
1 2 3 4 5 7 → no swap

इनपुट − Arr[] ={ 1, 2, 3, 3, 2 };

आउटपुट - क्रमबद्ध सरणी:1 2 2 3 3

स्पष्टीकरण -

1 2 3 3 2 → no swap
1 2 3 2 3 → no swap
1 2 3 2 3 → swap → 1 2 2 3 3
1 2 2 3 3 → no swap

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

चयन प्रकार के पुनरावर्ती दृष्टिकोण में, आधार मामला न्यूनतम सूचकांक =सरणी आकार -1 है। अन्यथा वर्तमान अनुक्रमणिका के साथ सरणी स्वैप से न्यूनतम खोजें और पुनरावर्ती सही क्रमबद्ध सरणी को क्रमबद्ध करें।

  • इनपुट सरणी Arr[] और लंबाई को उसमें तत्वों की संख्या के रूप में लें।

  • फ़ंक्शन findMin(int arr[], int i, int j) सरणी और उसकी अनुक्रमणिका लेता है और arr[i+1] से arr[j] के बीच न्यूनतम तत्व की अनुक्रमणिका देता है।

  • एक चर minpos लें।

  • यदि i और j दोनों समान हैं, तो i को न्यूनतम तत्व के सूचकांक के रूप में लौटाएं क्योंकि दोनों समान हैं।

  • अन्यथा रिकर्सिवली minpos =findMin(arr, i + 1, j) का उपयोग करके स्थिति i+1 से j की तलाश करें।

  • if(arr[i]

  • फ़ंक्शन recurselectSort(int arr1[], int len1, int pos1) इनपुट सरणी लेता है और चयन क्रम में रिकर्सन का उपयोग करके इसे आरोही क्रम में क्रमबद्ध करता है।

  • अगर pos1 ==len1 तो कोई न्यूनतम नहीं मिला, तो वापस आएं।

  • अन्य सेट minpos1 =findMin(arr1, pos1, len1-1)

  • यदि वर्तमान pos1 अनुक्रमणिका और न्यूनतम तत्व अनुक्रमणिका minpos1 समान नहीं हैं, तो इन अनुक्रमणिका में अस्थायी का उपयोग करके तत्वों को स्वैप करें।

  • recurselectSort(arr1, len1, pos1 + 1) का उपयोग करके शेष सरणी के लिए रिकर्स करें।

  • सभी कॉलों के अंत में, जब लेन 1 हो जाती है तो हम रिकर्सन से बाहर आ जाएंगे और सरणी को सॉर्ट किया जाएगा।

  • मुख्य के अंदर क्रमबद्ध सरणी को प्रिंट करें।

उदाहरण

#include <iostream>
using namespace std;
int findMin(int arr[], int i, int j){
   int minpos;
   if (i == j){
      return i;
   }
   minpos = findMin(arr, i + 1, j);
   if(arr[i]<arr[minpos]){
      minpos=i;
   }
   return (minpos);
}
void recurselectSort(int arr1[], int len1, int pos1){
   int temp;
   int minpos1;
   if (pos1 == len1){
      return;
   }
   minpos1 = findMin(arr1, pos1, len1-1);
   if (minpos1 != pos1){
      temp=arr1[pos1];
      arr1[pos1]=arr1[minpos1];
      arr1[minpos1]=temp;
   }
   recurselectSort(arr1, len1, pos1 + 1);
}
int main(){
   int Arr[] = {1,5,3,0,9,3,5};
   int length = sizeof(Arr)/sizeof(Arr[0]);
   recurselectSort(Arr,length,0);
   cout<<"Sorted Array using recursive Selection sort: "<<endl;
   for (int i = 0; i<length ; i++){
      cout << Arr[i] << " ";
   }
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा

Sorted Array using recursive Selection sort:
0 1 3 3 5 5 9

  1. C++ फ़ंक्शन में 2D सरणी पास करना

    किसी फ़ंक्शन को तर्क के रूप में Arrays को पारित किया जा सकता है। इस कार्यक्रम में, हम 2 आयामी सरणी के तत्वों को एक फ़ंक्शन में पास करके प्रदर्शित करने के लिए प्रदर्शन करेंगे। एल्गोरिदम Begin The 2D array n[][] passed to the function show(). Call function show() function, the array n (n) is tra

  1. C++ प्रोग्राम काउंटिंग सॉर्ट को लागू करने के लिए

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

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

    चयन सॉर्ट तकनीक में, सूची को दो भागों में बांटा गया है। एक भाग में सभी तत्वों को क्रमबद्ध किया जाता है और दूसरे भाग में वस्तुओं को क्रमबद्ध नहीं किया जाता है। सबसे पहले हम सरणी से अधिकतम या न्यूनतम डेटा लेते हैं। डेटा प्राप्त करने के बाद (न्यूनतम कहें) हम इसे पहले स्थान के डेटा को न्यूनतम डेटा के सा