二分查找

二分查找

http://www.nowcoder.com/questionTerminal/7bc4a1c7c371425d9faa9d1b511fe193

import java.util.*;
public class Solution {
    /**
     * 二分查找
     * @param n int整型 数组长度
     * @param v int整型 查找值
     * @param a int整型一维数组 有序数组
     * @return int整型
     */
//类似于求数组中第一个相等的数
    public int upper_bound_ (int n, int v, int[] a) {
        // write code here
        if(n==0||a[n-1]<v)return n+1;
        int low=0,high=n-1,mid=0;
        while(low<high){
//当求最后一个相等时:
//mid=low+(high-low+1)/2; 当a[mid]<=v时,low=mid;否则high=mid-1;
            mid=low+(high-low)/2;
            if(a[mid]>=v){
                high=mid;
            }else{
                low=mid+1;
            }
        }
        return high+1;
    }
}
全部评论

相关推荐

05-05 21:45
已编辑
广州大学 Java
点赞 评论 收藏
分享
缒梦&独舞:这家公司是这样的,去年给我实习offer了,不过也是面着玩儿的,他周六还要去做公益志愿活动
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-20 14:55
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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