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

C++ में एक क्रमबद्ध सरणी में तल

इस समस्या में, हमें एक क्रमबद्ध सरणी गिरफ्तारी [] और एक पूर्णांक मान x दिया जाता है। हमारा काम एक प्रोग्राम बनाना है जो एक क्रमबद्ध सरणी में मंजिल को खोजने के लिए . है ।

फ्लोर ऑफ़ X इन सॉर्टेड एरे एरर सरणी arr[] का सबसे बड़ा तत्व है जो x से छोटा या उसके बराबर है।

समस्या को समझने के लिए एक उदाहरण लेते हैं

Input: arr[] = {2, 5, 6, 8, 9, 12, 21, 25}, x = 10
Output: 9

स्पष्टीकरण -उपरोक्त सरणी में 9 सबसे बड़ी संख्या है जो 10 से छोटी या उसके बराबर है।

समाधान दृष्टिकोण

समस्या का एक सरल समाधान सीधे सरणी को पार करना और उन तत्वों को ढूंढना है जो शर्त को पूरा करते हैं। सरणी को पार करते समय,

हम प्रत्येक तत्व की जांच करेंगे, यदि यह x से बड़ा है, तो पिछले तत्व को x के तल के रूप में लौटाएं।

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम

#include <iostream>
using namespace std;

int findFloorSortedArray(int arr[], int n, int x){
   if (x >= arr[n - 1])
      return (n-1);
   if (x < arr[0])
      return -1;
   for (int i = 1; i < n; i++)
      if (arr[i] > x)
         return (i - 1);
   return -1;
}
int main(){
   int arr[] = {2, 5, 6, 8, 9, 12, 21, 25};
   int n = sizeof(arr) / sizeof(arr[0]);
   int x = 10;
   int floorIndex = findFloorSortedArray(arr, n - 1, x);
   if (floorIndex == -1)
      cout<<"The floor of "<<x<<" doesn't exist in the array";
   else
      cout<<"The floor of "<<x<<" in the array is "<<arr[floorIndex];
   return 0;
}

आउटपुट

The floor of 10 in the array is 9

वैकल्पिक विधि

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

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम

#include <iostream>
using namespace std;

int findFloorSortedArray(int arr[], int start, int end, int x){
   if (start > end)
      return -1;
   if (x >= arr[end])
      return end;
   int mid = (start + end) / 2;
   if (arr[mid] == x)
      return mid;
   if (mid > 0 && arr[mid - 1] <= x && x < arr[mid])
      return mid - 1;
   if (x < arr[mid])
      return findFloorSortedArray(arr, start, mid - 1, x);
   return findFloorSortedArray(arr, mid + 1, end, x);
}
int main(){
   int arr[] = {2, 5, 6, 8, 9, 12, 21, 25};
   int n = sizeof(arr) / sizeof(arr[0]);
   int x = 10;
   int floorIndex = findFloorSortedArray(arr, 0, n - 1, x);
   if (floorIndex == -1)
      cout<<"The floor of "<<x<<" doesn't exist in the array";
   else
      cout<<"The floor of "<<x<<" in the array is "<<arr[floorIndex];
   return 0;
}

आउटपुट

The floor of 10 in the array is 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. सी ++ प्रोग्राम सॉर्ट किए गए ऐरे को लागू करने के लिए

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

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

    C++ फ़ंक्शन के तर्क के रूप में संपूर्ण सरणी को पारित करने की अनुमति नहीं देता है। हालांकि, आप किसी इंडेक्स के बिना ऐरे का नाम निर्दिष्ट करके किसी ऐरे को पॉइंटर पास कर सकते हैं। यदि आप किसी फ़ंक्शन में एक एकल-आयाम सरणी को तर्क के रूप में पास करना चाहते हैं, तो आपको निम्नलिखित तीन तरीकों में से एक मे