JAVA手撕二分查找

查找

http://www.nowcoder.com/questionTerminal/d93db01c2ee44e8a9237d63842aca8aa

前半段是用两个辅助数组存值
后半段二分查找,找到后break返回,设置flag锁来定输出
注意这里while()循环条件是left<right
以及转移时是left=mid+1; .... right=mid;

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int[] temp;
        int[] num;
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();
            temp=new int[n];
            for(int i=0;i<n;i++){
                temp[i]=sc.nextInt();
            }
            Arrays.sort(temp);
            int m=sc.nextInt();
            num=new int[m];
            for(int i=0;i<m;i++){
                num[i]=sc.nextInt();
            }
            for(int i=0;i<m;i++){
                binSearch(temp,num[i],n);
            }
        }
    }
    public static void binSearch(int[] A,int target,int n){
        int left=0,right=n;
        int flag=0;
        while(left<right){
            int mid=(left+right)/2;
            if(A[mid]<target){
                flag=0;
                left=mid+1;
            }else if(A[mid]>target){
                flag=0;
                right=mid;
            }else{
                flag=1;
                break;
            }
        }
        if(flag==1){
            System.out.println("YES");
        }else{
            System.out.println("NO");
        }
    }
}

注意!此信息未认证,请谨慎判断信息的真实性!

全部评论
空

相关内容推荐

头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像 头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
1 收藏 评论
分享

全站热榜

正在热议