
- C++ Basics
- C++ Home
- C++ Overview
- C++ Environment Setup
- C++ Basic Syntax
- C++ Comments
- C++ Data Types
- C++ Variable Types
- C++ Variable Scope
- C++ Constants/Literals
- C++ Modifier Types
- C++ Storage Classes
- C++ Operators
- C++ Loop Types
- C++ Decision Making
- C++ Functions
- C++ Numbers
- C++ Arrays
- C++ Strings
- C++ Pointers
- C++ References
- C++ Date & Time
- C++ Basic Input/Output
- C++ Data Structures
- C++ Object Oriented
- C++ Classes & Objects
- C++ Inheritance
- C++ Overloading
- C++ Polymorphism
- C++ Abstraction
- C++ Encapsulation
- C++ Interfaces
C++ Program to Search Sorted Sequence Using Divide and Conquer with the Aid of Fibonacci Numbers
In this C++ program we implement a Divide and Conquer approach using Fibonacci numbers. Using Fibonacci numbers, we calculate mid of data array to search the data item. The time complexity of this approach is O(log(n)).
Algorithm
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
Example Code
#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; } }
Output
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
- Related Articles
- Python Program to solve Maximum Subarray Problem using Divide and Conquer
- Python Program to Display Fibonacci Sequence Using Recursion
- Maximum Sum SubArray using Divide and Conquer in C++
- Convex Hull using Divide and Conquer Algorithm in C++
- Introduction to Divide & Conquer Algorithms
- 8085 program to generate Fibonacci sequence
- 8086 program to generate Fibonacci Sequence
- Maximum Subarray Sum using Divide and Conquer algorithm in C++
- How to print the Fibonacci Sequence using Python?
- C++ Program to Find Fibonacci Numbers using Recursion
- C++ Program to Find Fibonacci Numbers using Iteration
- Advanced master theorem for divide and conquer recurrences
- C++ Program to Find Fibonacci Numbers using Matrix Exponentiation
- C++ Program to Find Fibonacci Numbers using Dynamic Programming
- C++ Program to find the median of two sorted arrays using binary search approach

Advertisements