[ref]
http://blog.csdn.net/linhuanmars/article/details/20525681
public class Solution { public int search(int[] A, int target) { if(A == null || A.length < 1) return -1; int lp = 0, rp = A.length - 1; while(lp <= rp){ int mid = lp + ((rp - lp) >> 1); if(A[mid] == target) return mid; if(A[mid] > A[lp]){ if(A[lp] == target) return lp; else if(A[lp] < target && target < A[mid]) rp = mid - 1; else lp = mid + 1; }else{ if(A[rp] == target) return rp; else if(A[mid] < target && target < A[rp]) lp = mid + 1; else rp = mid - 1; } } return -1; } }