Seaching for an element in a circular sorted array

Posted by guirgis on Stack Overflow See other posts from Stack Overflow or by guirgis
Published on 2010-05-14T13:57:21Z Indexed on 2010/05/14 14:04 UTC
Read the original article Hit count: 241

Filed under:
|

I wanted to share this with you, i had this problem in a google interview. we want to search for a given element in a circular sorted array in complexity not greater than O(Log n). ex: search for 13 in {5,9,13,1,3}. My idea was to convert the circular array into a regular sorted array then do a binary search on the resulting array, but my problem was the algorithm i came up was stupid that it takes O(n) in the worst case:

for(i = 1; i < a.length; i++){
if (a[i] < a[i-1]){
    minIndex = i; break;
}
}

then the corresponding index of ith element will be determined from the following relation:

(i + minInex - 1) % a.length

it is clear that my conversion (from circular to regular) algorithm may take O(n), so we need a better one, any suggestions?

© Stack Overflow or respective owner

Related posts about algorithm

Related posts about circular