Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • DSA
  • Interview Questions on Array
  • Practice Array
  • MCQs on Array
  • Tutorial on Array
  • Types of Arrays
  • Array Operations
  • Subarrays, Subsequences, Subsets
  • Reverse Array
  • Static Vs Arrays
  • Array Vs Linked List
  • Array | Range Queries
  • Advantages & Disadvantages
Open In App
Next Article:
Search, Insert, and Delete in an Sorted Array | Array Operations
Next article icon

Searching Elements in an Array | Array Operations

Last Updated : 23 May, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

In this post, we will look into search operation in an Array, i.e., how to search an element in an Array, such as:

  1. Searching in an Unsorted Array using Linear Search
  2. Searching in a Sorted Array using Linear Search
  3. Searching in a Sorted Array using Binary Search
  4. Searching in an Sorted Array using Fibonacci Search

Searching operations in an Unsorted Array using Linear Search

In an unsorted array, the search operation can be performed by linear traversal from the first element to the last element, i.e. Linear Search

Coding implementation of the search operation:

C++
// C++ program to implement linear // search in unsorted array #include <bits/stdc++.h> using namespace std;  // Function to implement search operation int findElement(int arr[], int n, int key) {     int i;     for (i = 0; i < n; i++)         if (arr[i] == key)             return i;      // If the key is not found     return -1; }  // Driver's Code int main() {     int arr[] = { 12, 34, 10, 6, 40 };     int n = sizeof(arr) / sizeof(arr[0]);      // Using a last element as search element     int key = 40;      // Function call     int position = findElement(arr, n, key);      if (position == -1)         cout << "Element not found";     else         cout << "Element Found at Position: "              << position + 1;      return 0; }  // This code is contributed // by Akanksha Rai 
C
// C program to implement linear // search in unsorted array #include <stdio.h>  // Function to implement search operation int findElement(int arr[], int n, int key) {     int i;     for (i = 0; i < n; i++)         if (arr[i] == key)             return i;      // If the key is not found     return -1; }  // Driver's Code int main() {     int arr[] = { 12, 34, 10, 6, 40 };     int n = sizeof(arr) / sizeof(arr[0]);      // Using a last element as search element     int key = 40;      // Function call     int position = findElement(arr, n, key);      if (position == -1)         printf("Element not found");     else         printf("Element Found at Position: %d",                position + 1);      return 0; } 
Java
// Java program to implement linear // search in unsorted arrays  class Main {      // Function to implement     // search operation     static int findElement(int arr[], int n, int key)     {         for (int i = 0; i < n; i++)             if (arr[i] == key)                 return i;          // If the key is not found         return -1;     }      // Driver's Code     public static void main(String args[])     {         int arr[] = { 12, 34, 10, 6, 40 };         int n = arr.length;          // Using a last element as search element         int key = 40;          // Function call         int position = findElement(arr, n, key);          if (position == -1)             System.out.println("Element not found");         else             System.out.println("Element Found at Position: "                                + (position + 1));     } } 
Python
# Python program for searching in # unsorted array   def findElement(arr, n, key):     for i in range(n):         if (arr[i] == key):             return i      # If the key is not found     return -1   # Driver's code if __name__ == '__main__':     arr = [12, 34, 10, 6, 40]     key = 40     n = len(arr)      # search operation     index = findElement(arr, n, key)     if index != -1:         print("Element Found at position: " + str(index + 1))     else:         print("Element not found")      # Thanks to Aditi Sharma for contributing     # this code 
C#
// C# program to implement linear // search in unsorted arrays using System;  class main {     // Function to implement     // search operation     static int findElement(int[] arr, int n, int key)     {         for (int i = 0; i < n; i++)             if (arr[i] == key)                 return i;          // If the key is not found         return -1;     }      // Driver Code     public static void Main()     {         int[] arr = { 12, 34, 10, 6, 40 };         int n = arr.Length;          // Using a last element as         // search element         int key = 40;         int position = findElement(arr, n, key);          if (position == -1)             Console.WriteLine("Element not found");         else             Console.WriteLine("Element Found at Position: "                               + (position + 1));     } }  //  This code is contributed by vt_m. 
JavaScript
// Javascript program to implement linear  // search in unsorted array   // Function to implement search operation  function findElement( arr, n, key) {     let i;     for (i = 0; i < n; i++)         if (arr[i] == key)             return i;      return -1; }            // Driver program          let arr = [12, 34, 10, 6, 40];     let n = arr.length;      // Using a last element as search element     let key = 40;     let position = findElement(arr, n, key);      if (position == - 1)         console.log("Element not found");     else         console.log("Element Found at Position: "               + (position + 1)); 
PHP
<?php // PHP program to implement linear  // search in unsorted array  // Function to implement // search operation  function findElement($arr, $n, $key) {     $i;     for ($i = 0; $i < $n; $i++)         if ($arr[$i] == $key)             return $i;            // If the key is not found     return -1; }  // Driver Code $arr = array(12, 34, 10, 6, 40); $n = sizeof($arr);  // Using a last element // as search element $key = 40; $position = findElement($arr, $n, $key);  if ($position == - 1)     echo("Element not found"); else     echo("Element Found at Position: " . ($position + 1));  // This code is contributed by Ajit. ?> 

Output
Element Found at Position: 5

Time Complexity: O(N) 
Auxiliary Space: O(1)

Searching in a Sorted Array using Linear Search

In a sorted array, the most trivial method for search operation is by using Linear Search.

Search Operation  in a sorted array

Below is the implementation of the above approach:

C++
// C++ program to implement linear // search in sorted array #include <bits/stdc++.h> using namespace std;  // Function to implement search operation int findElement(int arr[], int n, int key) {     int i;     for (i = 0; i < n; i++)         if (arr[i] == key)             return i;      // If the key is not found     return -1; }  // Driver's Code int main() {     int arr[] = { 5, 6, 7, 8, 9, 10 };     int n = sizeof(arr) / sizeof(arr[0]);      // Using a last element as search element     int key = 10;      // Function call     int position = findElement(arr, n, key);      if (position == -1)         cout << "Element not found";     else         cout << "Element Found at Position: "              << position + 1;      return 0; }  // This code is contributed // by Akanksha Rai 
C
// C program to implement linear // search in sorted array #include <stdio.h>  // Function to implement search operation int findElement(int arr[], int n, int key) {     int i;     for (i = 0; i < n; i++)         if (arr[i] == key)             return i;      // If the key is not found     return -1; }  // Driver's Code int main() {     int arr[] = { 5, 6, 7, 8, 9, 10 };     int n = sizeof(arr) / sizeof(arr[0]);      // Using a last element as search element     int key = 10;      // Function call     int position = findElement(arr, n, key);      if (position == -1)         printf("Element not found");     else         printf("Element Found at Position: %d",                position + 1);      return 0; } 
Java
// Java program to implement linear // search in sorted arrays  class Main {      // Function to implement     // search operation     static int findElement(int arr[], int n, int key)     {         for (int i = 0; i < n; i++)             if (arr[i] == key)                 return i;          // If the key is not found         return -1;     }      // Driver's Code     public static void main(String args[])     {         int arr[] = { 5, 6, 7, 8, 9, 10 };         int n = arr.length;          // Using a last element as search element         int key = 10;          // Function call         int position = findElement(arr, n, key);          if (position == -1)             System.out.println("Element not found");         else             System.out.println("Element Found at Position: "                                + (position + 1));     } } 
Python
# Python program for searching in # sorted array   def findElement(arr, n, key):     for i in range(n):         if (arr[i] == key):             return i      # If the key is not found     return -1   # Driver's code if __name__ == '__main__':     arr = [5, 6, 7, 8, 9, 10]     key = 10     n = len(arr)      # search operation     index = findElement(arr, n, key)     if index != -1:         print("Element Found at position: " + str(index + 1))     else:         print("Element not found")      # Thanks to Aditi Sharma for contributing     # this code 
C#
// C# program to implement linear // search in sorted arrays using System;  class main {     // Function to implement     // search operation     static int findElement(int[] arr, int n, int key)     {         for (int i = 0; i < n; i++)             if (arr[i] == key)                 return i;          // If the key is not found         return -1;     }      // Driver Code     public static void Main()     {         int[] arr = { 5, 6, 7, 8, 9, 10 };         int n = arr.Length;          // Using a last element as         // search element         int key = 10;         int position = findElement(arr, n, key);          if (position == -1)             Console.WriteLine("Element not found");         else             Console.WriteLine("Element Found at Position: "                               + (position + 1));     } }  //  This code is contributed by vt_m. 
JavaScript
// Javascript program to implement linear  // search in sorted array   // Function to implement search operation  function findElement( arr, n, key) {     let i;     for (i = 0; i < n; i++)         if (arr[i] == key)             return i;      return -1; }            // Driver program          let arr = [5, 6, 7, 8, 9, 10];     let n = arr.length;      // Using a last element as search element     let key = 10;     let position = findElement(arr, n, key);      if (position == - 1)         console.log("Element not found");     else         console.log("Element Found at Position: "               + (position + 1)); 
PHP
<?php // PHP program to implement linear  // search in sorted array  // Function to implement // search operation  function findElement($arr, $n, $key) {     $i;     for ($i = 0; $i < $n; $i++)         if ($arr[$i] == $key)             return $i;            // If the key is not found     return -1; }  // Driver Code $arr = array(5, 6, 7, 8, 9, 10); $n = sizeof($arr);  // Using a last element // as search element $key = 10; $position = findElement($arr, $n, $key);  if ($position == - 1)     echo("Element not found"); else     echo("Element Found at Position: " . ($position + 1));  // This code is contributed by Ajit. ?> 

Output
Element Found at Position: 6

Time Complexity: O(N) 
Auxiliary Space: O(1)

Searching in a Sorted Array using Binary Search

In a sorted array, the search operation can be performed efficiently by using binary search.

Search Operation  in a sorted array

Below is the implementation of the above approach:

C++
// C++ program to implement binary search in sorted array #include <bits/stdc++.h> using namespace std;  int binarySearch(int arr[], int low, int high, int key) {     if (high < low)         return -1;     int mid = (low + high) / 2; /*low + (high - low)/2;*/     if (key == arr[mid])         return mid;     if (key > arr[mid])         return binarySearch(arr, (mid + 1), high, key);     return binarySearch(arr, low, (mid - 1), key); }  /* Driver code */ int main() {     // Let us search 3 in below array     int arr[] = { 5, 6, 7, 8, 9, 10 };     int n, key;      n = sizeof(arr) / sizeof(arr[0]);     key = 10;      // Function call     cout << "Index: " << binarySearch(arr, 0, n - 1, key)          << endl;     return 0; }  // This code is contributed by NamrataSrivastava1 
C
// C program to implement binary search in sorted array #include <stdio.h>  int binarySearch(int arr[], int low, int high, int key) {     if (high < low)         return -1;     int mid = (low + high) / 2; /*low + (high - low)/2;*/     if (key == arr[mid])         return mid;     if (key > arr[mid])         return binarySearch(arr, (mid + 1), high, key);     return binarySearch(arr, low, (mid - 1), key); }  /* Driver Code */ int main() {     // Let us search 3 in below array     int arr[] = { 5, 6, 7, 8, 9, 10 };     int n, key;      n = sizeof(arr) / sizeof(arr[0]);     key = 10;      // Function call     printf("Index: %d\n", binarySearch(arr, 0, n - 1, key));     return 0; } 
Java
// Java program to implement binary // search in a sorted array  class Main {     // function to implement     // binary search     static int binarySearch(int arr[], int low, int high,                             int key)     {         if (high < low)             return -1;          /*low + (high - low)/2;*/         int mid = (low + high) / 2;         if (key == arr[mid])             return mid;         if (key > arr[mid])             return binarySearch(arr, (mid + 1), high, key);         return binarySearch(arr, low, (mid - 1), key);     }      /* Driver Code*/     public static void main(String[] args)     {         int arr[] = { 5, 6, 7, 8, 9, 10 };         int n, key;         n = arr.length - 1;         key = 10;          // Function call         System.out.println("Index: "                            + binarySearch(arr, 0, n, key));     } } 
Python
# python 3 program to implement # binary search in sorted array def binary_search(arr, start, end, key):          # if case is evaluated when element is found else -1 is returned     if (start < end):         mid = (start + end) //2          if (key == arr[mid]):             return mid                  if (key < arr[mid]):             return binary_search(arr, start, mid - 1, key)                  if (key > arr[mid]):             return binary_search(arr, mid + 1, end, key)          else:         return -1  # Driver code if __name__ == "__main__":          # Let us take a sorted array to find a key     arr = [11, 20, 39, 44, 57, 63, 72, 88, 94]     key = 72      index = binary_search(arr, 0, len(arr) - 1, key)     if index != -1:         print(f"Element found at index {index}")     else:         print("Element not found")  # This code is contributed by Smitha Dinesh Semwal # and improved by Rahul Varma 
C#
// C# program to implement binary // search in a sorted array  using System;  public class GFG {      // function to implement     // binary search     public static int binarySearch(int[] arr, int low,                                    int high, int key)     {         if (high < low) {             return -1;         }          int mid = (low + high) / 2;         if (key == arr[mid]) {             return mid;         }         if (key > arr[mid]) {             return binarySearch(arr, (mid + 1), high, key);         }         return binarySearch(arr, low, (mid - 1), key);     }      /* Driver Code */     public static void Main(string[] args)     {         int[] arr = new int[] { 5, 6, 7, 8, 9, 10 };         int n, key;         n = arr.Length;         key = 10;          // Function call         Console.WriteLine(             "Index: " + binarySearch(arr, 0, n - 1, key));     } }  // This code is contributed by Shrikant13 
JavaScript
// Javascript program to implement  // binary search in sorted array  function binarySearch( arr, low, high, key) {     if (high < low)         return -1;         /*low + (high - low)/2;*/     let mid = Math.trunc((low + high) / 2);      if (key == arr[mid])         return mid;     if (key > arr[mid])         return binarySearch(arr, (mid + 1), high, key);     return binarySearch(arr, low, (mid - 1), key); }           // Driver program          // Let us search 3 in below array     let arr = [ 5, 6, 7, 8, 9, 10 ];     let n, key;      n = arr.length;     key = 10;      console.log("Index: " + binarySearch(arr, 0, n - 1, key)     + "</br>");           
PHP
<?php // PHP program to implement // binary search in sorted array  function binarySearch($arr, $low,                        $high, $key)  {     if ($high < $low)      return -1;          $mid = (int)($low + $high) / 2;          if ($key == $arr[(int)$mid])         return $mid;          if ($key > $arr[(int)$mid])          return binarySearch($arr, ($mid + 1),                              $high, $key);          return (binarySearch($arr, $low,                          ($mid -1), $key)); }  // Driver Code  // Let us search 3 in below array $arr = array(5, 6, 7, 8, 9, 10); $n = count($arr); $key = 10;  // Function call echo "Index: ", (int)binarySearch($arr, 0,                                    $n-1, $key);  // This code is contributed by // Srathore ?> 

Output
Index: 5 

Time Complexity: O(log(n)) Using Binary Search
Auxiliary Space: O(log(n)) due to recursive calls, otherwise iterative version uses Auxiliary Space of O(1).

Searching in a Sorted Array using Fibonacci Search

Fibonacci Search is a comparison-based technique that uses Fibonacci numbers to search an element in a sorted array.

Untitled

Below is the implementation of the above approach:

C++
// C++ program of the above approach #include <iostream> #include <vector> using std::cout;  //  Utility function to find minimum of two elements int minimum(int x, int y) { return (x < y) ? x : y; }  /* Returns index of x if present,  else returns -1 */ int fibonacciSearch(int arr[], int x, int n) {     /* Initialize fibonacci numbers */     int fibMMm2 = 0; // (m-2)'th Fibonacci No.     int fibMMm1 = 1; // (m-1)'th Fibonacci No.     int fibM = fibMMm2 + fibMMm1; // m'th Fibonacci      /* fibM is going to store the smallest Fibonacci        Number greater than or equal to n */     while (fibM < n) {         fibMMm2 = fibMMm1;         fibMMm1 = fibM;         fibM = fibMMm2 + fibMMm1;     }      // Marks the eliminated range from front     int offset = -1;      /* while there are elements to be inspected. Note that        we compare arr[fibMm2] with x. When fibM becomes 1,        fibMm2 becomes 0 */     while (fibM > 1) {         // Check if fibMm2 is a valid location         int i = minimum(offset + fibMMm2, n - 1);          /* If x is greater than the value at index fibMm2,            cut the subarray array from offset to i */         if (arr[i] < x) {             fibM = fibMMm1;             fibMMm1 = fibMMm2;             fibMMm2 = fibM - fibMMm1;             offset = i;         }          /* If x is greater than the value at index fibMm2,            cut the subarray after i+1  */         else if (arr[i] > x) {             fibM = fibMMm2;             fibMMm1 = fibMMm1 - fibMMm2;             fibMMm2 = fibM - fibMMm1;         }          /* element found. return index */         else             return i;     }      /* comparing the last element with x */     if (fibMMm1 && arr[offset + 1] == x)         return offset + 1;      /*element not found. return -1 */     return -1; }  // Driver Code int main() {     int arr[] = { 10, 22, 35, 40, 45,  50,                   80, 82, 85, 90, 100, 235 };     int n = sizeof(arr) / sizeof(arr[0]);     int x = 235;     int ind = fibonacciSearch(arr, x, n);     if (ind >= 0)         cout << "Found at index: " << ind;     else         cout << x << " isn't present in the array";      return 0; }  // This code is contributed by sourabh_jain. 
C
// C program for Fibonacci Search #include <stdio.h>  // Function to find minimum of two elements int minimum(int x, int y) { return (x <= y) ? x : y; }  /* Returns index of x if present, else returns -1 */ int fibonacciSearch(int arr[], int x, int n) {     /* Initialize Fibonacci numbers */     int fibMMm2 = 0; // (m-2)'th Fibonacci number     int fibMMm1 = 1; // (m-1)'th Fibonacci number     int fibM = fibMMm2 + fibMMm1; // m'th Fibonacci number      /* fibM is going to store the smallest Fibonacci      number greater than or equal to n */     while (fibM < n) {         fibMMm2 = fibMMm1;         fibMMm1 = fibM;         fibM = fibMMm2 + fibMMm1;     }      // Marks the eliminated range from front     int offset = -1;      /* while there are elements to be inspected. Note that      we compare arr[fibMm2] with x. When fibM becomes 1,      fibMm2 becomes 0 */     while (fibM > 1) {         // Check if fibMm2 is a valid location         int i = minimum(offset + fibMMm2, n - 1);          /* If x is greater than the value at index fibMm2,          cut the subarray array from offset to i */         if (arr[i] < x) {             fibM = fibMMm1;             fibMMm1 = fibMMm2;             fibMMm2 = fibM - fibMMm1;             offset = i;         }          /* If x is greater than the value at index fibMm2,          cut the subarray after i+1 */         else if (arr[i] > x) {             fibM = fibMMm2;             fibMMm1 = fibMMm1 - fibMMm2;             fibMMm2 = fibM - fibMMm1;         }          /* element found. return index */         else             return i;     }      /* comparing the last element with x */     if (fibMMm1 && arr[offset + 1] == x)         return offset + 1;      /* element not found. return -1 */     return -1; }  /* driver function */ int main(void) {     int arr[] = { 10, 22, 35, 40, 45,  50,                   80, 82, 85, 90, 100, 235 };     int n = sizeof(arr) / sizeof(arr[0]);     int x = 235;     int index = fibonacciSearch(arr, x, n);     if (index >= 0)         printf("Element found at index: %d", index);     else         printf("%d is not present in the array", x);     return 0; } // This code is contributed by sourabh_jain. 
Java
// Java program of the above approach import java.util.*; // adding util packages  class FibonacciSearch {     // Function to find the minimum of two elements     public static int minimum(int x, int y)     {         return (x <= y) ? x : y;     }      /* Returns the index of x if present, else returns -1 */     public static int fibonacciSearch(int arr[], int x,                                       int n)     {         /* Initialize Fibonacci numbers */         int fibMMm2 = 0; // (m-2)'th Fibonacci number         int fibMMm1 = 1; // (m-1)'th Fibonacci number         int fibM             = fibMMm2 + fibMMm1; // m'th Fibonacci number          /* fibM is going to store the smallest Fibonacci         Number greater than or equal to n */         while (fibM < n) {             fibMMm2 = fibMMm1;             fibMMm1 = fibM;             fibM = fibMMm2 + fibMMm1;         }          // Marks the eliminated range from the front         int offset = -1;          /* While there are elements to be inspected.         Note that we compare arr[fibMm2] with x.         When fibM becomes 1, fibMm2 becomes 0 */         while (fibM > 1) {             // Check if fibMm2 is a valid location             int i = minimum(offset + fibMMm2, n - 1);              /* If x is greater than the value at index             fibMm2,             cut the subarray array from offset to i */             if (arr[i] < x) {                 fibM = fibMMm1;                 fibMMm1 = fibMMm2;                 fibMMm2 = fibM - fibMMm1;                 offset = i;             }              /* If x is less than the value at index fibMm2,             cut the subarray after i+1 */             else if (arr[i] > x) {                 fibM = fibMMm2;                 fibMMm1 = fibMMm1 - fibMMm2;                 fibMMm2 = fibM - fibMMm1;             }              /* Element found. Return index */             else                 return i;         }          /* Comparing the last element with x */         if (fibMMm1 == 1 && arr[n - 1] == x)             return n - 1;          /* Element not found. Return -1 */         return -1;     }      // Driver code     public static void main(String[] args)     {         int arr[] = { 10, 22, 35, 40, 45,  50,                       80, 82, 85, 90, 100, 235 };         int n = 12;         int x = 235;         int index = fibonacciSearch(arr, x, n);         if (index >= 0)             System.out.print("Element found at index: "                              + index);         else             System.out.print(                 x + " isn't present in the array");     } }  // This code is contributed by sourabh_jain. 
Python
# Pythin3 program of the above approach def fibonacci_search(arr, x, n):     # Initialize Fibonacci numbers     fibMMm2 = 0  # (m-2)'th Fibonacci No.     fibMMm1 = 1  # (m-1)'th Fibonacci No.     fibM = fibMMm2 + fibMMm1  # m'th Fibonacci      # fibM is going to store the smallest     # Fibonacci Number greater than or equal to n     while fibM < n:         fibMMm2 = fibMMm1         fibMMm1 = fibM         fibM = fibMMm2 + fibMMm1      # Marks the eliminated range from the front     offset = -1      # while there are elements to be inspected.     # Note that we compare arr[fibMm2] with x.     # When fibM becomes 1, fibMm2 becomes 0     while fibM > 1:         # Check if fibMm2 is a valid location         i = min(offset + fibMMm2, n - 1)          # If x is greater than the value at         # index fibMm2, cut the subarray array         # from offset to i         if arr[i] < x:             fibM = fibMMm1             fibMMm1 = fibMMm2             fibMMm2 = fibM - fibMMm1             offset = i          # If x is less than the value at         # index fibMm2, cut the subarray         # after i+1         elif arr[i] > x:             fibM = fibMMm2             fibMMm1 = fibMMm1 - fibMMm2             fibMMm2 = fibM - fibMMm1          # element found. return index         else:             return i      # comparing the last element with x     if fibMMm1 and arr[n - 1] == x:         return n - 1      # element not found. return -1     return -1   # Driver Code arr = [10, 22, 35, 40, 45, 50,        80, 82, 85, 90, 100, 235] n = len(arr) x = 235 index = fibonacci_search(arr, x, n) if index >= 0:     print("Element found at index:", index) else:     print(x, "isn't present in the array")  # This code is contributed by sourabh_jain. 
C#
// C# program of the above approach using System;  class GFG {     // Function to find the minimum of two elements     public static int Min(int x, int y)     {         return (x <= y) ? x : y;     }      /* Returns the index of x if present, else returns -1 */     public static int FibonacciSearch(int[] arr, int x,                                       int n)     {         /* Initialize Fibonacci numbers */         int fibMMm2 = 0; // (m-2)'th Fibonacci number         int fibMMm1 = 1; // (m-1)'th Fibonacci number         int fibM = fibMMm2 + fibMMm1; // m'th Fibonacci          /* fibM is going to store the smallest Fibonacci         Number greater than or equal to n */         while (fibM < n) {             fibMMm2 = fibMMm1;             fibMMm1 = fibM;             fibM = fibMMm2 + fibMMm1;         }          // Marks the eliminated range from the front         int offset = -1;          /* While there are elements to be inspected.         Note that we compare arr[fibMm2] with x.         When fibM becomes 1, fibMm2 becomes 0 */         while (fibM > 1) {             // Check if fibMm2 is a valid location             int i = Min(offset + fibMMm2, n - 1);              /* If x is greater than the value at             index fibMm2, cut the subarray array             from offset to i */             if (arr[i] < x) {                 fibM = fibMMm1;                 fibMMm1 = fibMMm2;                 fibMMm2 = fibM - fibMMm1;                 offset = i;             }              /* If x is less than the value at             index fibMm2, cut the subarray             after i+1 */             else if (arr[i] > x) {                 fibM = fibMMm2;                 fibMMm1 = fibMMm1 - fibMMm2;                 fibMMm2 = fibM - fibMMm1;             }              /* Element found. Return index */             else                 return i;         }          /* Comparing the last element with x */         if (fibMMm1 == 1 && arr[n - 1] == x)             return n - 1;          /* Element not found. Return -1 */         return -1;     }      // Driver code     public static void Main()     {         int[] arr = { 10, 22, 35, 40, 45,  50,                       80, 82, 85, 90, 100, 235 };         int n = 12;         int x = 235;         int index = FibonacciSearch(arr, x, n);         if (index >= 0)             Console.Write("Element found at index: "                           + index);         else             Console.Write(x                           + " isn't present in the array");     } }  // This code is contributed by sourabh_jain. 
JavaScript
// JavaScript program of the above approach  /* Returns the index of x if present, else returns -1 */ function fibonacciSearch(arr, x, n) {     /* Initialize Fibonacci numbers */     let fibMMm2 = 0; // (m-2)'th Fibonacci No.     let fibMMm1 = 1; // (m-1)'th Fibonacci No.     let fibM = fibMMm2 + fibMMm1; // m'th Fibonacci      /* fibM is going to store the smallest Fibonacci     Number greater than or equal to n */     while (fibM < n) {         fibMMm2 = fibMMm1;         fibMMm1 = fibM;         fibM = fibMMm2 + fibMMm1;     }      // Marks the eliminated range from the front     let offset = -1;      /* While there are elements to be inspected.     Note that we compare arr[fibMm2] with x.     When fibM becomes 1, fibMm2 becomes 0 */     while (fibM > 1) {         // Check if fibMm2 is a valid location         let i = Math.min(offset + fibMMm2, n - 1);          /* If x is greater than the value at         index fibMm2, cut the subarray array         from offset to i */         if (arr[i] < x) {             fibM = fibMMm1;             fibMMm1 = fibMMm2;             fibMMm2 = fibM - fibMMm1;             offset = i;         }          /* If x is less than the value at index fibMm2,         cut the subarray after i+1 */         else if (arr[i] > x) {             fibM = fibMMm2;             fibMMm1 = fibMMm1 - fibMMm2;             fibMMm2 = fibM - fibMMm1;         }          /* Element found. Return index */         else return i;     }      /* Comparing the last element with x */     if (fibMMm1 && arr[n - 1] == x) {         return n - 1;     }      /* Element not found. Return -1 */     return -1; }  /* Driver code */ let arr = [10, 22, 35, 40, 45, 50, 80, 82, 85, 90, 100, 235]; let n = arr.length; let x = 235; let index = fibonacciSearch(arr, x, n); if (index >= 0) {     console.log("Element found at index: " + index); } else {     console.log(x + " isn't present in the array"); }  // This code is contributed by sourabh_jain. 
PHP
<?php // PHP program of the above approach  /* Returns the index of x if present, else returns -1 */ function fibonacciSearch($arr, $x, $n) {     /* Initialize Fibonacci numbers */     $fibMMm2 = 0; // (m-2)'th Fibonacci No.     $fibMMm1 = 1; // (m-1)'th Fibonacci No.     $fibM = $fibMMm2 + $fibMMm1; // m'th Fibonacci      /* fibM is going to store the smallest Fibonacci     Number greater than or equal to n */     while ($fibM < $n)     {         $fibMMm2 = $fibMMm1;         $fibMMm1 = $fibM;         $fibM = $fibMMm2 + $fibMMm1;     }      // Marks the eliminated range from the front     $offset = -1;      /* While there are elements to be inspected.     Note that we compare arr[fibMm2] with x.     When fibM becomes 1, fibMm2 becomes 0 */     while ($fibM > 1)     {         // Check if fibMm2 is a valid location         $i = min($offset + $fibMMm2, $n - 1);          /* If x is greater than the value at         index fibMm2, cut the subarray array         from offset to i */         if ($arr[$i] < $x)         {             $fibM = $fibMMm1;             $fibMMm1 = $fibMMm2;             $fibMMm2 = $fibM - $fibMMm1;             $offset = $i;         }          /* If x is less than the value at         index fibMm2, cut the subarray         after i+1 */         elseif ($arr[$i] > $x)         {             $fibM = $fibMMm2;             $fibMMm1 = $fibMMm1 - $fibMMm2;             $fibMMm2 = $fibM - $fibMMm1;         }          /* Element found. Return index */         else             return $i;     }      /* Comparing the last element with x */     if ($fibMMm1 == 1 && $arr[$n - 1] == $x)         return $n - 1;      /* Element not found. Return -1 */     return -1; }  /* Driver code */ $arr = array(10, 22, 35, 40, 45, 50, 80, 82, 85, 90, 100, 235); $n = count($arr); $x = 235; $index = fibonacciSearch($arr, $x, $n); if ($index >= 0)     printf("Element found at index: " . $index); else     printf($x . " isn't present in the array"); ?>  // This code is contributed by sourabh_jain. 

Output
Found at index: 11

Time Complexity: O(log(n)) Using Fibonacci Search
Auxiliary Space: O(1) Using Fibonacci Search


Next Article
Search, Insert, and Delete in an Sorted Array | Array Operations

C

code_r
Improve
Article Tags :
  • DSA
  • Arrays
Practice Tags :
  • Arrays

Similar Reads

  • Deleting Elements in an Array - Array Operations
    In this post, we will look into deletion operation in an Array, i.e., how to delete an element from an Array, such as: Delete an Element from the Beginning of an ArrayDelete an Element from a Given Position in an ArrayDelete First Occurrence of Given Element from an ArrayRemove All Occurrences of an
    4 min read
  • Inserting Elements in an Array - Array Operations
    In this post, we will look into insertion operation in an Array, i.e., how to insert into an Array, such as: Insert Element at the Beginning of an ArrayInsert Element at a given position in an ArrayInsert Element at the End of an ArrayInsert Element at the Beginning of an ArrayInserting an element a
    2 min read
  • Search, Insert, and Delete in an Unsorted Array | Array Operations
    In this post, a program to search, insert, and delete operations in an unsorted array is discussed. Search Operation:In an unsorted array, the search operation can be performed by linear traversal from the first element to the last element. Coding implementation of the search operation:[GFGTABS] C++
    15+ min read
  • Search, Insert, and Delete in an Sorted Array | Array Operations
    How to Search in a Sorted Array?In a sorted array, the search operation can be performed by using binary search. Below is the implementation of the above approach: [GFGTABS] C++ // C++ program to implement binary search in sorted array #include <bits/stdc++.h> using namespace std; int binarySe
    15+ min read
  • Array range queries for searching an element
    Given an array of N elements and Q queries of the form L R X. For each query, you have to output if the element X exists in the array between the indices L and R(included). Prerequisite : Mo's Algorithms Examples : Input : N = 5 arr = [1, 1, 5, 4, 5] Q = 3 1 3 2 2 5 1 3 5 5 Output : No Yes Yes Expla
    15+ min read
  • Search an element in a reverse sorted array
    Given an array arr[] sorted in decreasing order, and an integer X, the task is to check if X is present in the given array or not. If X is present in the array, print its index ( 0-based indexing). Otherwise, print -1. Examples: Input: arr[] = {5, 4, 3, 2, 1}, X = 4Output: 1Explanation: Element X (=
    8 min read
  • Searching in Array for a given element in Julia
    Given an array (1D, 2D or 3D), and an element to look for in the array. If the element is present in the array, then print the position of the element in the array, else print "Element not found". In the recent updates to Julia, the developers have unified the search() and find() functions into a si
    6 min read
  • Binary search in an object Array for the field of an element
    What is Binary Searching?Binary searching is a type of algorithm that can quickly search through a sorted array of elements. The algorithm works by comparing the search key to the middle element of the array. If the key is larger than the middle element, the algorithm will search the right side of t
    8 min read
  • Removing Array Element and Re-Indexing in PHP
    In order to remove an element from an array, we can use unset() function which removes the element from an array, and then use array_values() function which indexes the array numerically automatically. Function Usedunset(): This function unsets a given variable. Syntax:void unset ( mixed $var [, mix
    2 min read
  • Find elements which are present in first array and not in second
    Given two arrays, the task is that we find numbers which are present in first array, but not present in the second array. Examples : Input : a[] = {1, 2, 3, 4, 5, 10}; b[] = {2, 3, 1, 0, 5};Output : 4 10 4 and 10 are present in first array, butnot in second array.Input : a[] = {4, 3, 5, 9, 11}; b[]
    14 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences