Min in Array
Find the minimum element in a sorted and
rotated array
July 2, 2013
A sorted array is rotated at some unknown
point, find the minimum element in it.
Following solution assumes that all
elements are distinct.
Examples
Input: {5, 6, 1, 2, 3, 4}
Output: 1
Input: {1, 2, 3, 4}
Output: 1
Input: {2, 1}
Output: 1
***/
#include<iostream>
using namespace std;
int minInArray(int *a, int low, int high)
{
int mid, l,r;
if(low >= high)
return a[high];
// the mid of low and high
mid=(high
+ low)/2 ;
if(a[mid] < a[mid-1])
return a[mid];
l=minInArray(a,low,mid);
r=minInArray(a,mid+1,high);
if(l<r)
return l;
return r;
}
void main() {
int min;
int a[] = {5, 6, 1, 2, 2, 3, 3,
4};
int sz = sizeof(a) / sizeof(int);
min
= minInArray(a, 0, sz-1);
cout
<< min<<endl;
}
Comments
Post a Comment