二分查找

二分查找

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;
    }
}
全部评论

相关推荐

买蜜雪也用卷:我觉得应该没有哪个人敢说自己熟练使用git,代码分支一复杂还是得慢慢寻思一下的,不过基本的拉代码提交代码还有分支什么的是应该会
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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