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

Popular posts from this blog

Sudoku

Longest prefix matching - trie

Climbing Stairs