Related Articles
Linear Search
• Difficulty Level : Basic
• Last Updated : 19 Apr, 2021

Problem: Given an array arr[] of n elements, write a function to search a given element x in arr[].

Examples :

```Input : arr[] = {10, 20, 80, 30, 60, 50,
110, 100, 130, 170}
x = 110;
Output : 6
Element x is present at index 6

Input : arr[] = {10, 20, 80, 30, 60, 50,
110, 100, 130, 170}
x = 175;
Output : -1
Element x is not present in arr[].```

A simple approach is to do a linear search, i.e

• Start from the leftmost element of arr[] and one by one compare x with each element of arr[]
• If x matches with an element, return the index.
• If x doesn’t match with any of elements, return -1. Example:

## C++

 `// C++ code to linearly search x in arr[]. If x``// is present then return its location, otherwise``// return -1` `#include ``using` `namespace` `std;` `int` `search(``int` `arr[], ``int` `n, ``int` `x)``{``    ``int` `i;``    ``for` `(i = 0; i < n; i++)``        ``if` `(arr[i] == x)``            ``return` `i;``    ``return` `-1;``}` `// Driver code``int` `main(``void``)``{``    ``int` `arr[] = { 2, 3, 4, 10, 40 };``    ``int` `x = 10;``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr);``  ` `    ``// Function call``    ``int` `result = search(arr, n, x);``    ``(result == -1)``        ``? cout << ``"Element is not present in array"``        ``: cout << ``"Element is present at index "` `<< result;``    ``return` `0;``}`

## C

 `// C code to linearly search x in arr[]. If x``// is present then return its location, otherwise``// return -1` `#include ` `int` `search(``int` `arr[], ``int` `n, ``int` `x)``{``    ``int` `i;``    ``for` `(i = 0; i < n; i++)``        ``if` `(arr[i] == x)``            ``return` `i;``    ``return` `-1;``}` `// Driver code``int` `main(``void``)``{``    ``int` `arr[] = { 2, 3, 4, 10, 40 };``    ``int` `x = 10;``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr);``  ` `    ``// Function call``    ``int` `result = search(arr, n, x);``    ``(result == -1)``        ``? ``printf``(``"Element is not present in array"``)``        ``: ``printf``(``"Element is present at index %d"``, result);``    ``return` `0;``}`

## Java

 `// Java code for linearly searching x in arr[]. If x``// is present then return its location, otherwise``// return -1` `class` `GFG``{``    ``public` `static` `int` `search(``int` `arr[], ``int` `x)``    ``{``        ``int` `n = arr.length;``        ``for` `(``int` `i = ``0``; i < n; i++)``        ``{``            ``if` `(arr[i] == x)``                ``return` `i;``        ``}``        ``return` `-``1``;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `arr[] = { ``2``, ``3``, ``4``, ``10``, ``40` `};``        ``int` `x = ``10``;` `        ``// Function call``        ``int` `result = search(arr, x);``        ``if` `(result == -``1``)``            ``System.out.print(``                ``"Element is not present in array"``);``        ``else``            ``System.out.print(``"Element is present at index "``                             ``+ result);``    ``}``}`

## Python3

 `# Python3 code to linearly search x in arr[].``# If x is present then return its location,``# otherwise return -1`  `def` `search(arr, n, x):` `    ``for` `i ``in` `range``(``0``, n):``        ``if` `(arr[i] ``=``=` `x):``            ``return` `i``    ``return` `-``1`  `# Driver Code``arr ``=` `[``2``, ``3``, ``4``, ``10``, ``40``]``x ``=` `10``n ``=` `len``(arr)` `# Function call``result ``=` `search(arr, n, x)``if``(result ``=``=` `-``1``):``    ``print``(``"Element is not present in array"``)``else``:``    ``print``(``"Element is present at index"``, result)`

## C#

 `// C# code to linearly search x in arr[]. If x``// is present then return its location, otherwise``// return -1``using` `System;` `class` `GFG {``    ``public` `static` `int` `search(``int``[] arr, ``int` `x)``    ``{``        ``int` `n = arr.Length;``        ``for` `(``int` `i = 0; i < n; i++)``        ``{``            ``if` `(arr[i] == x)``                ``return` `i;``        ``}``        ``return` `-1;``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int``[] arr = { 2, 3, 4, 10, 40 };``        ``int` `x = 10;` `        ``// Function call``        ``int` `result = search(arr, x);``        ``if` `(result == -1)``            ``Console.WriteLine(``                ``"Element is not present in array"``);``        ``else``            ``Console.WriteLine(``"Element is present at index "``                              ``+ result);``    ``}``}` `// This code is contributed by DrRoot_`

## PHP

 ``

## Javascript

 ``
Output
`Element is present at index 3`

The time complexity of the above algorithm is O(n).

Linear search is rarely used practically because other search algorithms such as the binary search algorithm and hash tables allow significantly faster-searching comparison to Linear search.

Improve Linear Search Worst-Case Complexity

1. if element Found at last  O(n) to O(1)

Below is the implementation:

## C++14

 `// C++ program for linear search``#include``using` `namespace` `std;` `void` `search(vector<``int``> arr, ``int` `search_Element)``{``    ``int` `left = 0;``    ``int` `length = arr.size();``    ``int` `position = -1;``      ``int` `right = length - 1;``      ` `    ``// Run loop from 0 to right``    ``for``(left = 0; left <= right;)``    ``{``        ` `        ``// If search_element is found with``        ``// left variable``        ``if` `(arr[left] == search_Element)``        ``{``            ` `            ``position = left;``            ``cout << ``"Element found in Array at "``                 ``<< position + 1 << ``" Position with "``                 ``<< left + 1 << ``" Attempt"``;``               ` `            ``break``;``        ``}``      ` `        ``// If search_element is found with``        ``// right variable``        ``if` `(arr[right] == search_Element)``        ``{``            ``position = right;``            ``cout << ``"Element found in Array at "``                 ``<< position + 1 << ``" Position with "``                 ``<< length - right << ``" Attempt"``;``               ` `            ``break``;``        ``}``        ``left++;``        ``right--;``    ``}` `    ``// If element not found``    ``if` `(position == -1)``        ``cout << ``"Not found in Array with "``             ``<< left << ``" Attempt"``;``}` `// Driver code``int` `main()``{``    ``vector<``int``> arr{ 1, 2, 3, 4, 5 };``    ``int` `search_element = 5;``    ` `    ``// Function call``    ``search(arr, search_element);``}``    ` `// This code is contributed by mayanktyagi1709`

## Java

 `// Java program for linear search` `import` `java.io.*;` `class` `GFG``{` `    ``public` `static` `void` `search(``int` `arr[], ``int` `search_Element)``    ``{``        ``int` `left = ``0``;``        ``int` `length = arr.length;``        ``int` `right = length - ``1``;``        ``int` `position = -``1``;` `        ``// run loop from 0 to right``        ``for` `(left = ``0``; left <= right;)``        ``{``            ` `            ``// if search_element is found with left variable``            ``if` `(arr[left] == search_Element)``            ``{``                ``position = left;``                ``System.out.println(``                    ``"Element found in Array at "``                    ``+ (position + ``1``) + ``" Position with "``                    ``+ (left + ``1``) + ``" Attempt"``);``                ``break``;``            ``}``          ` `            ``// if search_element is found with right variable``            ``if` `(arr[right] == search_Element)``            ``{``                ``position = right;``                ``System.out.println(``                    ``"Element found in Array at "``                    ``+ (position + ``1``) + ``" Position with "``                    ``+ (length - right) + ``" Attempt"``);``                ``break``;``            ``}``            ` `            ``left++;``            ``right--;``        ``}` `        ``// if element not found``        ``if` `(position == -``1``)``            ``System.out.println(``"Not found in Array with "``                               ``+ left + ``" Attempt"``);``    ``}``  ` `   ` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `arr[] = { ``1``, ``2``, ``3``, ``4``, ``5` `};``        ``int` `search_element = ``5``;``      ` `        ``// Function call``        ``search(arr,search_element);``    ``}``}`

## Python3

 `# Python3 program for linear search``def` `search(arr, search_Element):``    ``left ``=` `0``    ``length ``=` `len``(arr)``    ``position ``=` `-``1``    ``right ``=` `length ``-` `1` `    ``# Run loop from 0 to right``    ``for` `left ``in` `range``(``0``, right, ``1``):` `        ``# If search_element is found with``        ``# left variable``        ``if` `(arr[left] ``=``=` `search_Element):``            ``position ``=` `left``            ``print``(``"Element found in Array at "``, position ``+``                  ``1``, ``" Position with "``, left ``+` `1``, ``" Attempt"``)``            ``break` `        ``# If search_element is found with``        ``# right variable``        ``if` `(arr[right] ``=``=` `search_Element):``            ``position ``=` `right``            ``print``(``"Element found in Array at "``, position ``+` `1``,``                  ``" Position with "``, length ``-` `right, ``" Attempt"``)``            ``break``        ``left ``+``=` `1``        ``right ``-``=` `1` `    ``# If element not found``    ``if` `(position ``=``=` `-``1``):``        ``print``(``"Not found in Array with "``, left, ``" Attempt"``)` `# Driver code``arr ``=` `[``1``, ``2``, ``3``, ``4``, ``5``]``search_element ``=` `5` `# Function call``search(arr, search_element)` `# This code is contributed by Dharanendra L V.`

## C#

 `// C# program for linear search``using` `System;``class` `GFG``{` `    ``public` `static` `void` `search(``int` `[]arr,``                              ``int` `search_Element)``    ``{``        ``int` `left = 0;``        ``int` `length = arr.Length;``        ``int` `right = length - 1;``        ``int` `position = -1;` `        ``// run loop from 0 to right``        ``for` `(left = 0; left <= right;)``        ``{``            ` `            ``// if search_element is found with left variable``            ``if` `(arr[left] == search_Element)``            ``{``                ``position = left;``                ``Console.WriteLine(``                    ``"Element found in Array at "``                    ``+ (position + 1) + ``" Position with "``                    ``+ (left + 1) + ``" Attempt"``);``                ``break``;``            ``}``          ` `            ``// if search_element is found with right variable``            ``if` `(arr[right] == search_Element)``            ``{``                ``position = right;``                ``Console.WriteLine(``                    ``"Element found in Array at "``                    ``+ (position + 1) + ``" Position with "``                    ``+ (length - right) + ``" Attempt"``);``                ``break``;``            ``}``            ` `            ``left++;``            ``right--;``        ``}` `        ``// if element not found``        ``if` `(position == -1)``            ``Console.WriteLine(``"Not found in Array with "``                               ``+ left + ``" Attempt"``);``    ``}``  ` `   ` `    ``// Driver code``    ``public` `static` `void` `Main(String[] args)``    ``{``        ``int` `[]arr = { 1, 2, 3, 4, 5 };``        ``int` `search_element = 5;``      ` `        ``// Function call``        ``search(arr,search_element);``    ``}``}` `// This code is contributed by 29AjayKumar`

## Javascript

 ``
Output
`Element found in Array at 5 Position with 1 Attempt`

Also See – Binary Search