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

यह जांचने के लिए प्रोग्राम कि कोई सरणी सॉर्ट की गई है या नहीं (पुनरावर्ती और पुनरावर्ती) C

तत्वों की संख्या के साथ एक सरणी एआर [] को देखते हुए, हमारा कार्य यह जांचना है कि दिया गया सरणी क्रमबद्ध क्रम में है या नहीं, यदि यह क्रमबद्ध क्रम में है तो "सरणी क्रमबद्ध क्रम में है" प्रिंट करें, अन्यथा "सरणी" प्रिंट करें क्रमबद्ध क्रम में नहीं है"।

उपर्युक्त समस्या को हल करने के लिए हम पुनरावर्ती या पुनरावर्ती दृष्टिकोण का उपयोग कर सकते हैं, हम दोनों पर चर्चा करेंगे।

पुनरावर्ती दृष्टिकोण

तो, एक पुनरावर्ती दृष्टिकोण क्या है? रिकर्सिव दृष्टिकोण में हम वांछित परिणाम प्राप्त होने तक बार-बार एक फ़ंक्शन को बार-बार कॉल करते हैं। पुनरावर्ती दृष्टिकोण में फ़ंक्शन द्वारा लौटाए गए मान स्टैक मेमोरी में संग्रहीत होते हैं।

इनपुट

arr[] = {12, 13, 14, 16, 18}

आउटपुट

The array is in sorted order

स्पष्टीकरण -12 <13 <14 <16 <18, तो, हाँ सरणी क्रमबद्ध है

इनपुट

arr[] = {2, 1, 3, 5, 6}

आउटपुट

The array is not in sorted order

स्पष्टीकरण -2 1 से छोटा नहीं है, इसलिए, यह क्रमबद्ध क्रम में नहीं है।

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

  • एक सरणी arr[] को इनपुट के रूप में लें और n को एक सरणी के आकार के साथ प्रारंभ करें।

  • जांचें कि क्या हम किसी सरणी की शुरुआत तक पहुँच चुके हैं, सही लौटें।

  • जांचें कि क्या किसी सरणी का पिछला तत्व अगले तत्व से छोटा नहीं है, झूठी वापसी करें।

  • डिक्रीमेंट एन और गोटो स्टेप 2।

एल्गोरिदम

Start
In function int arraySortedCheck(int arr[], int n)
   Step 1→ If n == 1 || n == 0 then,
      Return 1
   Step 2→ If arr[n-1] < arr[n-2] then,
      Return 0
   Step 3→ Return arraySortedCheck(arr, n-1)
In Function int main(int argc, char const *argv[])
   Step 1→ Declare and initialize arr[] as {1,8,3,4,7}
   Step 2→ Declare and initialize int n as sizeof(arr)/sizeof(arr[0])
   Step 3→ If arraySortedCheck(arr, n) then,
      Print "Array is in sorted order”
   Step 4→ Else
      Print "Array is not in sorted order”
Stop

उदाहरण

//Recursive approach
#include <stdio.h>
//Recursive function to check if it
//is in sorted order or not
int arraySortedCheck(int arr[], int n){
   //all elements are checked and
   //all are in sorted order
   if (n == 1 || n == 0)
      return 1;
   //when an array is not in sorted order
   if(arr[n-1] < arr[n-2])
      return 0;
   return arraySortedCheck(arr, n-1);
}
int main(int argc, char const *argv[]){
   int arr[] = {1,8,3,4,7};
   int n = sizeof(arr)/sizeof(arr[0]);
   if(arraySortedCheck(arr, n)){
      printf("Array is in sorted order\n");
   }
   else
      printf("Array is not in sorted order\n");
   return 0;
}

आउटपुट

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

The array is in sorted order

पुनरावर्ती दृष्टिकोण

पुनरावृत्त दृष्टिकोण में, हम फॉर-लूप, जबकि-लूप या डू-लूप जैसे लूप का उपयोग करते हैं जो स्टेटमेंट को तब तक निष्पादित करता है जब तक कि कंडीशन सही न हो जिसका अर्थ है 1.

इनपुट

arr[] = {12, 13, 14, 16, 18}

आउटपुट

The array is in sorted order

स्पष्टीकरण -12 <13 <14 <16 <18, तो, हाँ सरणी क्रमबद्ध क्रम में है

इनपुट

arr[] = {2, 1, 3, 5, 6}

आउटपुट

The array is not in sorted order

स्पष्टीकरण 2 1 से छोटा नहीं है, इसलिए, यह क्रमबद्ध क्रम में नहीं है।

समस्या को हल करने के लिए नीचे उपयोग किया गया दृष्टिकोण इस प्रकार है

  • इनपुट अरेस्ट करें []।

  • जब तक हम उस सरणी के अंत तक नहीं पहुँच जाते तब तक लूप करें।

    • जांचें कि क्या वर्तमान तत्व अगले तत्व से छोटा नहीं है, झूठी वापसी करें और बाहर निकलें।

    • अन्यथा जारी रखें।

  • गोटो चरण 2.

एल्गोरिदम

Start
In function int arraySortedCheck(int arr[], int n)
   Step 1 → Loop For i = 0 and i < n and ++i
      If arr[n-1] < arr[n-2] then,
         Return 0
   Step 2→ Return 1
In Function int main(int argc, char const *argv[])
   Step 1→ Declare and initialize arr[] as {1,8,3,4,7}
   Step 2→ Declare and initialize int n as sizeof(arr)/sizeof(arr[0])
   Step 3→ If arraySortedCheck(arr, n) then,
      Print "Array is in sorted order”
   Step 4→ Else
      Print "Array is not in sorted order”
Stop

उदाहरण

//Iterative approach
#include <stdio.h>
int arraySortedCheck(int arr[], int n){
   for (int i = 0; i < n; ++i){
      //when an array is not in sorted order
      if(arr[n-1] < arr[n-2])
         return 0;
   }
   //all elements are checked and
   //all are in sorted order
   return 1;
}
int main(int argc, char const *argv[]){
   int arr[] = {1,8,3,4,7};
   int n = sizeof(arr)/sizeof(arr[0]);
   if(arraySortedCheck(arr, n)){
      printf("Array is in sorted order\n");
   }
   else
      printf("Array is not in sorted order\n");
   return 0;
}

आउटपुट

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

The array is in sorted order

  1. सी प्रोग्राम यह जांचने के लिए कि कोई ऐरे पालिंड्रोम है या नहीं

    किसी भी आकार n की arr [] सरणी को देखते हुए, हमारा कार्य यह पता लगाना है कि सरणी पैलिंड्रोम है या नहीं। पैलिंड्रोम एक अनुक्रम है जिसे पीछे और आगे की तरह पढ़ा जा सकता है, जैसे:मैडम, नमन, आदि। तो एक सरणी की जांच करने के लिए पैलिंड्रोम है या नहीं, इसलिए हम एक सरणी को पीछे और आगे से पार कर सकते हैं जैसे

  1. यह जांचने के लिए प्रोग्राम कि कोई ऐरे पालिंड्रोम है या C++ में STL का उपयोग नहीं कर रहा है

    एन पूर्णांकों की एक सरणी गिरफ्तारी [एन] को देखते हुए, कार्य यह पता लगाना है कि सरणी एक पैलिंड्रोम है या नहीं। हमें बताए गए कार्य को C++ में STL का उपयोग करके करना है। सी ++ में एसटीएल (स्टैंडर्ड टेम्प्लेट लाइब्रेरी) की एक विशेषता है, यह सी ++ टेम्प्लेट क्लासेस का एक सेट है जो डेटा संरचनाओं और ढेर,

  1. C++ में किसी सरणी की बिटनोसिटी की जांच करने का कार्यक्रम

    एन पूर्णांकों की एक सरणी गिरफ्तारी [एन] को देखते हुए, कार्य यह जांचना है कि दिया गया सरणी बिटोनिक है या नहीं। यदि दी गई सरणी बिटोनिक है तो हां यह एक बिटोनिक सरणी है प्रिंट करें, अन्यथा प्रिंट करें नहीं यह एक बिटोनिक सरणी नहीं है। एक बिटोनिक सरणी तब होती है जब सरणी पहले सख्ती से बढ़ते क्रम में होती