跟进“搜索旋转排序数组”,假如有重复元素又将如何?
是否会影响运行时间复杂度?
如何影响?
为何会影响?
写出一个函数判断给定的目标值是否出现在数组中。
样例
是否会影响运行时间复杂度?
如何影响?
为何会影响?
写出一个函数判断给定的目标值是否出现在数组中。
样例
给出[3,4,4,5,7,0,1,2]和target=4,返回 true
import java.util.Scanner;
/**
* 跟进“搜索旋转排序数组”,假如有重复元素又将如何?
是否会影响运行时间复杂度?
如何影响?
为何会影响?
写出一个函数判断给定的目标值是否出现在数组中。
样例
给出[3,4,4,5,7,0,1,2]和target=4,返回 true
*
* @author Dell
*
*/
public class Test63 {
public static boolean search(int[] A, int target)
{
if(A.length==0)
return false;
if(A.length==1)
{
return A[0]==target? true: false;
}
int i=0;
int j=A.length-1;
while(i<=j)
{
int mid=(i+j)/2;
if(A[mid]==target)
{
return true;
}
else if(A[i]<A[mid])
{
if(A[mid]>target&&A[i]<=target)
j=mid-1;
else
i=mid+1;
}
else if(A[i]>A[mid])
{
if(A[mid]<target&&target<=A[j])
{
i=mid+1;
}
else
j=mid-1;
}
else
{
i++;
}
}
return false;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] a=new int[n];
for(int i=0;i<a.length;i++)
{
a[i]=sc.nextInt();
}
int target=sc.nextInt();
System.out.println(search(a,target));
}
}