Find the Minimum element in a Sorted and Rotated Array
Given a sorted array arr[] (may be distinct or may contain duplicates) of size N that is rotated at some unknown point, the task is to find the minimum element in it.
Examples:
Input: arr[] = {5, 6, 1, 2, 3, 4}
Output: 1
Explanation: 1 is the minimum element present in the array.Input: arr[] = {1, 2, 3, 4}
Output: 1Input: arr[] = {2, 1}
Output: 1
Follow the steps mentioned below to implement the idea:
- Declare a variable (say min_ele) to store the minimum value and initialize it with arr[0].
- Traverse the array from the start.
- Update the minimum value (min_ele) if the current element is less than it.
- Return the final value of min_ele as the required answer.
Below is the implementation of the above approach.
/*package whatever //do not write package name here */
import
java.io.*;
class
GFG {
// Function to find the minimum value
static
int
findMin(int
arr[], int
n)
{
int
min_ele = arr[0];
// Traversing over array to
// find minimum element
for
(int
i = 0; i < n; i++) {
if
(arr[i] < min_ele) {
min_ele = arr[i];
}
}
return
min_ele;
}
public
static
void
main (String[] args) {
int
arr[] = { 5, 6, 1, 2, 3, 4
};
int
N = arr.length;
System.out.println(findMin(arr, N));
}
}
Output
1
Time Complexity: O(N)
Auxiliary Space: O(1)