Search in Rotated Sorted Array

来源:互联网 发布:java 字符串随机排列 编辑:程序博客网 时间:2024/06/06 07:16

Suppose a sorted array is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become4 5 6 7 0 1 2).

You are given a target value to search. If found in the array return its index, otherwise return -1.

You may assume no duplicate exists in the array.

 

解法一:当然是直接线性查找。

public static int search(int[] A, int target) {int i;for(i = 0; i < A.length; i++)if(A[i] == target){break;}if(i == A.length)return -1;elsereturn i;    }


解法二:二分查找。

public static int search2(int[] A, int target) {int result = -1;int l = 0, r = A.length - 1, mid; while(l <= r){mid = (l + r) / 2;if(A[mid] == target){result = mid;break;}else if(A[l] <= A[mid]) // left sorted{if(A[l] <= target && target < A[mid]){r = mid - 1;}elsel = mid + 1;}else{if(A[mid] < target && target <= A[r]){l = mid + 1;}elser = mid - 1;}}return result;    }


 

0 0
原创粉丝点击