简单折半查找

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int size = sc.nextInt();
        int[] list = new int[size+1];
        for(int num = 1 ; num<= size ;num++){
            list[num]= sc.nextInt();
        }
        for (int i =1;i<=size;i++) {
            System.out.println(list[i]);
        }
        int value = sc.nextInt();
        int low = 1 ;
        int high = list.length-1;
        int mid = 0 ;
        int time = 0;
        while (low<=high){
            time++;
            mid = (low + high)/2;
            if(list[mid]==value){
                System.out.println("located on "+mid);
                break;
            }
            else if(list[mid]>value){
                high = mid-1;
            }
            else {
                low = mid +1;
            }
        }
        System.out.println("compare "+time+" times");
        sc.close();
    }
}

图片说明

全部评论
双类型取整Math.floor(double)向下取整。 Math.ceil(double)向上取整。
点赞 回复 分享
发布于 2019-09-20 20:15
说明一下,JAVA中INT类型是向下取整的
点赞 回复 分享
发布于 2019-09-20 20:13

相关推荐

不愿透露姓名的神秘牛友
昨天 16:32
FieldMatching:看你已读不回是有什么顾虑吗?
点赞 评论 收藏
分享
粗心的熊熊求求offer:什么内容都没有还弄两页
点赞 评论 收藏
分享
每晚夜里独自颤抖:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务