/**
* Find Minimum in Rotated Sorted Array
* Suppose a sorted array is rotated at some pivot unknown to you beforehand.
* (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).
* Find the minimum element.
* You may assume no duplicate exists in the array.
* Tags: Array, Binary Search
* Similar Problems: Search in Rotated Sorted Array ,Find Minimum in Rotated Sorted Array II
*
* Note : Recursive, Binary Search
* @author chenshuna
*/
public class FindMinimuminRotatedSortedArray {
public static int findMin(int[] nums) {
if(nums.length == 1){
return nums[0];
}
return binarySearch(0, nums.length - 1, nums);
}
public static int binarySearch(int left, int right, int[] nums){
if(left >= right){
return nums[left];
}
int mid = ( left + right ) / 2;
if(mid >= 1 && nums[mid] < nums[mid -1]){
return nums[(left+right)/2];
}
else if(nums[mid] >= nums[left] && nums[mid] >= nums[right]){
return binarySearch(mid + 1 , right, nums);
}
else
return binarySearch(left, mid - 1, nums);
}
public static void main(String[] args) {
int[] nums = { 5, 1, 2, 3, 4 };
System.out.print(findMin(nums));
}
}