搜索旋转排序数组II

跟进“搜索旋转排序数组”,假如有重复元素又将如何?
是否会影响运行时间复杂度?
如何影响?
为何会影响?
写出一个函数判断给定的目标值是否出现在数组中。
样例

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

	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值