搜索旋转排序数组II

来源:互联网 发布:linux ntpdate 脚本 编辑:程序博客网 时间:2024/06/08 14:50
跟进“搜索旋转排序数组”,假如有重复元素又将如何?
是否会影响运行时间复杂度?
如何影响?
为何会影响?
写出一个函数判断给定的目标值是否出现在数组中。
样例

给出[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)); }}


原创粉丝点击