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

C++ में अनंत संख्याओं के क्रमबद्ध सरणी में किसी तत्व की स्थिति का पता लगाएं

इस समस्या में हमें अनंत क्रमबद्ध संख्याओं से युक्त एक सरणी दी जाती है। हमारा कार्य अनंत संख्याओं के क्रमबद्ध सरणी में किसी तत्व की स्थिति का पता लगाना है।

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

इनपुट

arr[] = {2, 4, 6, 8, 9, 12, 14,17, ….}, ele = 9

आउटपुट

4

स्पष्टीकरण

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

क्रमबद्ध सरणी से तत्वों को कुशलतापूर्वक खोजने के लिए, हम बाइनरी खोज पद्धति का उपयोग करेंगे। यहां, एकल अंतिम बिंदु ज्ञात नहीं है, हम एल्गोरिथम को थोड़ा संशोधित करेंगे।

हम प्रारंभ सूचक को पहले स्थान पर ठीक करेंगे, फिर अंत सूचक को दूसरी स्थिति में ले जाएंगे। इसके बाद, हम अंत सूचक पर मान की जांच करेंगे और यदि मान कुंजी से कम है तो इसे दोगुना करके बढ़ाएंगे और अंत सूचक की अंतिम स्थिति के साथ प्रारंभ सूचक को अपडेट करेंगे।

जब अंतिम स्थिति मान पाए जाने वाले तत्व से अधिक होता है, तो हम बाइनरी खोज का उपयोग करके इस उप-सरणी में खोज करेंगे।

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

उदाहरण

#include<iostream>
using namespace std;
int binarySearch(int arr[], int start, int end, int ele) {
   if (end >= start) {
      int mid = start + (end - start)/2;
      if (arr[mid] == ele)
         return mid;
      if (arr[mid] > ele)
         return binarySearch(arr, start, mid-1, ele);
      return binarySearch(arr, mid+1, end, ele);
   }
   return -1;
}
int findPos(int arr[], int value) {
   int start = 0, end = 1;
   while (arr[end] < value) {
      start = end;
      end = 2*end;
   }
   return binarySearch(arr, start, end, value);
}
int main(){
   int arr[] = {1, 2, 4, 6, 8, 9, 12, 14, 17, 21, 45};
   int index = findPos(arr, 9);
   if (index == -1)
      cout<<"Element not found!";
   else
      cout<<"Element found! index = "<<index;
   return 0;
}

आउटपुट

Element found! index = 5

  1. सी ++ में सरणी में प्रत्येक तत्व के लिए निकटतम मान पाएं

    यहां हम देखेंगे कि किसी सरणी में प्रत्येक तत्व के लिए निकटतम मान कैसे प्राप्त करें। यदि किसी तत्व x में अगला तत्व है जो उससे बड़ा है, और सरणी में भी मौजूद है, तो वह उस तत्व का अधिक मूल्य होगा। यदि तत्व मौजूद नहीं है, तो -1 लौटाएं। मान लीजिए कि सरणी तत्व [10, 5, 11, 6, 20, 12] हैं, तो बड़े तत्व [11,

  1. सी ++ में घुमाए गए क्रमबद्ध सरणी में घूर्णन गणना खोजें

    विचार करें कि हमारे पास एक सरणी है, जो क्रमबद्ध सरणी घुमाई गई है। हमें सरणी को सॉर्ट करने के लिए आवश्यक घुमावों की संख्या का पता लगाना होगा। (हम दाएं से बाएं घुमाने पर विचार करेंगे।) मान लीजिए कि सरणी इस प्रकार है:{15, 17, 1, 2, 6, 11}, तो हमें सरणी को क्रमबद्ध करने के लिए दो बार घुमाना होगा। अंतिम

  1. सी ++ में सरणी में प्रत्येक तत्व की सर्पासर गणना खोजें

    मान लीजिए कि एक सरणी A दिया गया है। हमें उस सरणी में प्रत्येक तत्व की संख्या को पार करना होगा। पार करने वाले अधिक से अधिक तत्व होते हैं जो वर्तमान तत्व की सरणी के दाईं ओर मौजूद होते हैं। मान लीजिए A ={2, 7, 5, 3, 0, 8, 1}, श्रेष्ठ हैं {4, 1, 1, 2, 0, 0}, तो 2 में दायीं ओर 4 संख्याएँ हैं, जो बड़ी हैं