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

सी ++ प्रोग्राम फाइबोनैचि नंबरों की सहायता से विभाजित और जीत का उपयोग करके क्रमबद्ध अनुक्रम खोजने के लिए

इस C++ प्रोग्राम में हम फाइबोनैचि संख्याओं का उपयोग करते हुए एक फूट डालो और जीतो दृष्टिकोण लागू करते हैं। फाइबोनैचि संख्याओं का उपयोग करके, हम डेटा आइटम को खोजने के लिए मध्य डेटा सरणी की गणना करते हैं। इस दृष्टिकोण की समय जटिलता O(log(n)) है।

एल्गोरिदम

Begin
   Assign the data to the array in a sorted manner.
   Take input of the element to be searched.
   Call FibonacciSearch() function.
   Calculate the mid value using ‘start+fib[index-2]’ expression.
   If the chosen item is equal to the value at mid index, print result and return to main.
   If it is lesser than the value at mid index, proceed with the left sub-array.
   If it is more than the value at mid index, proceed with the right sub-array.
   If the calculated mid value is equal to either start or end then the item is not found in the array.
End

उदाहरण कोड

#include<iostream>
using namespace std;
void FibonacciSearch(int *a, int start, int end, int *fib, int index, int item) {
   int i, mid;
   mid = start+fib[index-2];
   if(item == a[mid]) {
      cout<<"\n item found at "<<mid<<" index.";
      return;
   } else if(item == a[start]) {
      cout<<"\n item found at "<<start<<" index.";
      return;
   } else if(item == a[end]) {
      cout<<"\n item found at "<<end<<" index.";
      return;
   } else if(mid == start || mid == end) {
      cout<<"\nElement not found";
      return;
   } else if(item > a[mid])
         FibonacciSearch(a, mid, end, fib, index-1, item);
      else
         FibonacciSearch(a, start, mid, fib, index-2, item);
   }
   main() {
      int n, i, fib[20], a[10]={3, 7, 55, 86, 7, 15, 26, 30, 46, 95};
      char ch;
      fib[0] = 0;
      fib[1] = 1;
      i = 1;
      while(fib[i] < 10) {
         i++;
         fib[i] = fib[i-1] + fib[i-2];
      }
      up:
         cout<<"\nEnter the Element to be searched: ";
         cin>>n;
         FibonacciSearch(a, 0, 9, fib, i, n);
         cout<<"\n\n\tDo you want to search more...enter choice(y/n)?";
         cin>>ch;
         if(ch == 'y' || ch == 'Y')
            goto up;
         return 0;
   }
}

आउटपुट

Enter the Element to be searched: 26
item found at 6 index.
Do you want to search more...enter choice(y/n)?y
Enter the Element to be searched: 45
item not found
Do you want to search more...enter choice(y/n)?n

  1. C++ का उपयोग करके दिए गए एक छोर और मध्य के साथ एक पंक्ति के दूसरे छोर का पता लगाएं

    इस समस्या में, हमें एक प्रारंभिक बिंदु A(xA रेखा के दो बिंदुओं के निर्देशांक दिए गए हैं। , वाईए ) और मध्यबिंदु M(xM , वाईएम ) .हमारा काम है एक पंक्ति के दूसरे छोर को एक छोर और मध्य के साथ ढूंढना । समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट A = [1, 2], M = [3, 0] आउटपुट [5, -2] स्पष्टीकरण

  1. सी ++ प्रोग्राम पुनरावृत्ति का उपयोग करके फाइबोनैचि संख्या खोजने के लिए

    निम्नलिखित पुनरावृति का उपयोग करके फाइबोनैचि श्रृंखला खोजने के लिए एक उदाहरण है। उदाहरण #include <iostream> using namespace std; void fib(int num) {    int x = 0, y = 1, z = 0;    for (int i = 0; i < num; i++) {       cout << x << " "

  1. सी ++ प्रोग्राम रिकर्सन का उपयोग करके फाइबोनैचि संख्या खोजने के लिए

    निम्नलिखित रिकर्सन का उपयोग करते हुए फाइबोनैचि श्रृंखला का एक उदाहरण है। उदाहरण #include <iostream> using namespace std; int fib(int x) {    if((x==1)||(x==0)) {       return(x);    }else {       return(fib(x-1)+fib(x-2));    } } int