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: 276
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