C++ Program For Linear Search
Last Updated :
20 Feb, 2023
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++
#include <iostream>
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;
}
int main( void )
{
int arr[] = {2, 3, 4, 10, 40};
int x = 10;
int n = sizeof (arr) / sizeof (arr[0]);
int result = search(arr, n, x);
(result == -1) ?
cout << "Element is not present in array" :
cout << "Element is present at index " <<
result;
return 0;
}
|
Output
Element is present at index 3
The time complexity of the above algorithm is O(n).
The space complexity of the above algorithm is O(1) as no extra space is used.
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
- if element Found at last O(n) to O(1)
- It is the same as previous method because here we are performing 2 ‘if’ operations in one iteration of the loop and in previous method we performed only 1 ‘if’ operation. This makes both the time complexities same.
Below is the implementation:
C++14
#include<bits/stdc++.h>
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;
for (left = 0; left <= right;)
{
if (arr[left] == search_Element)
{
position = left;
cout << "Element found in Array at " <<
position + 1 << " Position with " <<
left + 1 << " Attempt" ;
break ;
}
if (arr[right] == search_Element)
{
position = right;
cout << "Element found in Array at " <<
position + 1 << " Position with " <<
length - right << " Attempt" ;
break ;
}
left++;
right--;
}
if (position == -1)
cout << "Not found in Array with "
<< left << " Attempt" ;
}
int main()
{
vector< int > arr{1, 2, 3, 4, 5};
int search_element = 5;
search(arr, search_element);
}
|
Output
Element found in Array at 5 Position with 1 Attempt
Time Complexity : O(n)
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...