美文网首页
欧几里德与二分搜索

欧几里德与二分搜索

作者: 小王ovo | 来源:发表于2021-07-19 11:29 被阅读0次
    public class test1 {
        /**
         * 欧几里徳公式,求最大公约数
         */
        public static int gcd(int p,int q){
            if (q==0){
                return p;
            }
            int r=p%q;
            return gcd(q,r);
        }
    
        /**
         * 二分
         * 
         * @param key 
         * @param array
         * @return
         */
        public static int rank(int key,int[] array){
            //搜索区域的前置坐标
            int lo=0;
            //最大的下标=数组长度-1
            int hi=array.length-1;
            while (lo<=hi){
                //开始二分
                int mid=lo+(hi-lo)/2;
                if (key>array[mid]){
                    hi=mid-1;
                }else if (key<array[mid]){
                    lo=mid+1;
                }else {
                    return mid;
                }
            }
            return -1;
        }
    
        public static void main(String[] args) {
            int gcd = gcd(198, 20);
            System.out.println(gcd);
    
            int[] array={10,33,434,545,654,232};
            int rank = rank(5, array);
            if (rank==-1){
                System.out.println("没有");
            }else {
                System.out.println(rank);
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:欧几里德与二分搜索

          本文链接:https://www.haomeiwen.com/subject/pubcmltx.html