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

घातीय खोज


घातीय खोज को दोहरीकरण या सरपट खोज के रूप में भी जाना जाता है। इस तंत्र का उपयोग उस श्रेणी को खोजने के लिए किया जाता है जहां खोज कुंजी मौजूद हो सकती है। यदि L और U सूची के ऊपरी और निचले बाउंड हैं, तो L और U दोनों 2 की शक्ति हैं। अंतिम खंड के लिए, U सूची का अंतिम स्थान है। इसी कारण से, इसे घातांक के रूप में जाना जाता है।

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

घातीय खोज तकनीक की जटिलता

  • समय की जटिलता: ओ (1) सर्वोत्तम मामले के लिए। O(log2 i) औसत या सबसे खराब स्थिति के लिए। जहां i वह स्थान है जहां खोज कुंजी मौजूद है।
  • अंतरिक्ष जटिलता: ओ(1)

इनपुट और आउटपुट

Input:
A sorted list of data:
10 13 15 26 28 50 56 88 94 127 159 356 480 567 689 699 780 850 956 995
The search key 780
Output:
Item found at location: 16

एल्गोरिदम

द्विआधारी खोज (सरणी, प्रारंभ, अंत, कुंजी)

इनपुट : एक क्रमबद्ध सरणी, प्रारंभ और समाप्ति स्थान, और खोज कुंजी

आउटपुट - कुंजी का स्थान (यदि पाया जाता है), अन्यथा गलत स्थान।

Begin
   if start <= end then
      mid := start + (end - start) /2
      if array[mid] = key then
         return mid location
      if array[mid] > key then
         call binarySearch(array, mid+1, end, key)
      else when array[mid] < key then
         call binarySearch(array, start, mid-1, key)
   else
      return invalid location
End

घातीय खोज (सरणी, प्रारंभ, अंत, कुंजी)

इनपुट: एक क्रमबद्ध सरणी, प्रारंभ और समाप्ति स्थान, और खोज कुंजी

आउटपुट: कुंजी का स्थान (यदि पाया जाता है), अन्यथा गलत स्थान।

Begin
   if (end – start) <= 0 then
      return invalid location
   i := 1
   while i < (end - start) do
      if array[i] < key then
         i := i * 2 //increase i as power of 2
      else
         terminate the loop
   done
   call binarySearch(array, i/2, i, key)
End

उदाहरण

#include<iostream>
using namespace std;

int binarySearch(int array[], int start, int end, int key) {
   if(start <= end) {
      int mid = (start + (end - start) /2); //mid location of the list
      if(array[mid] == key)
         return mid;
      if(array[mid] > key)
         return binarySearch(array, start, mid-1, key);
         return binarySearch(array, mid+1, end, key);
   }
   return -1;
}

int exponentialSearch(int array[], int start, int end, int key){
   if((end - start) <= 0)
      return -1;
      int i = 1; // as 2^0 = 1
      while(i < (end - start)){
         if(array[i] < key)
            i *= 2; //i will increase as power of 2
         else
            break; //when array[i] corsses the key element
   }
   return binarySearch(array, i/2, i, key); //search item in the smaller range
}

int main() {
   int n, searchKey, loc;
   cout << "Enter number of items: ";
   cin >> n;
   int arr[n]; //create an array of size n
   cout << "Enter items: " << endl;
   for(int i = 0; i< n; i++) {
      cin >> arr[i];
   }
   cout << "Enter search key to search in the list: ";
   cin >> searchKey;
   if((loc = exponentialSearch(arr, 0, n, searchKey)) >= 0)
      cout << "Item found at location: " << loc << endl;
   else
      cout << "Item is not found in the list." << endl;
}

आउटपुट

Enter number of items: 20
Enter items:
10 13 15 26 28 50 56 88 94 127 159 356 480 567 689 699 780 850 956 995
Enter search key to search in the list: 780
Item found at location: 16

  1. फिक्स विंडोज 10 स्टार्ट बटन काम नहीं कर रहा है

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

  1. फिक्स विंडोज 10 स्टार्ट मेन्यू सर्च काम नहीं कर रहा है

    Windows 10 में खोज मेनू का उपयोग Windows के पिछले संस्करण की तुलना में बहुत अधिक किया जाता है। आप इसका उपयोग किसी भी फ़ाइल, एप्लिकेशन, फ़ोल्डर, सेटिंग आदि पर नेविगेट करने के लिए कर सकते हैं। लेकिन, कभी-कभी, आप कुछ भी खोजने में सक्षम नहीं हो सकते हैं या आपको एक खाली खोज परिणाम मिल सकता है। Cortana खो

  1. विंडोज 11 में स्टार्ट मेन्यू से ऑनलाइन सर्च को डिसेबल कैसे करें?

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