Search in Rotated Sorted Array

来源:互联网 发布:淘宝有平板客户端吗 编辑:程序博客网 时间:2024/06/06 17:14
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.



算法思路:

(1)根据二分思想,找出中间元素mid,first为起始下标,last为结尾下标

(2)比较first指向元素与mid指向元素的大小

   如果小于,再判断target值是否位于first和mid所指向的值之间,如果在,修改last的值为mid,如果不在,修改first的值为mid+1

   如:4 5 6 7 0 1 2,target=5

      4 5 6 7 0 1 2,target=1

   如果大于,判断target的值是否位于mid和last所指向的值之间,如果在这个区间,修改first的值为mid+1,否则修改last的值为mid

   如:4 5 0 1 2,target=1      

      4 5 0 1 2,target=4


public static int search(int[] array,int target){if(array!=null){int first=0;int last=array.length-1;while(first!=last){int mid=(first+last)/2;if(mid==target)return mid;if(array[first]<=array[mid]){if(target<array[mid]&&target>array[first])last=mid;elsefirst=mid+1;}else{if(target>array[mid]&&target<array[last])first=mid+1;elselast=mid;}}}return -1;}





0 0
原创粉丝点击