zoukankan      html  css  js  c++  java
  • Algs4-1.4.10二分查找找出元素所在的最小索引

    1.4.10修改二分查找算法,使之总是返回和被查找的键匹配的索引最小元素(且仍然能够保证对数级别的运行时间)。
    答: 以下代码rankMin。
    图片

    import java.util.Arrays;
    public class BinarySearch
    {
        public static int rank(int key,int[]a)
        {
            int lo=0;
            int hi=a.length-1;
            int keyIndex=-1;
            while (lo<=hi)
            {
                int mid=lo+(hi-lo)/2;
                if (key<a[mid]) hi=mid-1;
                else if(key>a[mid]) lo=mid+1;
                else  return mid;
             }
            return keyIndex;
         }
       
        public static int rankMin(int key,int[]a)
        {
            int lo=0;
            int hi=a.length-1;
            int keyIndex=-1;
            while (lo<=hi)
            {
                int mid=lo+(hi-lo)/2;
                if (key<a[mid]) hi=mid-1;
                else if(key>a[mid]) lo=mid+1;
                else
                {
                  keyIndex=mid;
                  hi=mid-1;
                }
            }
            return keyIndex;
         }
       
            public static int rankMax(int key,int[]a)
        {
            int lo=0;
            int hi=a.length-1;
            int keyIndex=-1;
            while (lo<=hi)
            {
                int mid=lo+(hi-lo)/2;
                if (key<a[mid]) hi=mid-1;
                else if(key>a[mid]) lo=mid+1;
                else
                {
                  keyIndex=mid;
                  lo=mid+1;
                }
            }
            return keyIndex;
         }

        public static void main(String[] args)
        {
            int[] whitelist=In.readInts(args[0]);
            int key=Integer.parseInt(args[1]);
            Arrays.sort(whitelist);
            StdOut.println("Key rank index is:"+ rank(key,whitelist));
            StdOut.println("Key rankMin index is:"+ rankMin(key,whitelist));
            StdOut.println("Key rankMax index is:"+ rankMax(key,whitelist));
        }
    }
  • 相关阅读:
    Visual Studio 2010的活动,有兴趣的朋友可以来参加
    .NET 业务框架开发实战之九 Mapping属性原理和验证规则的实现策略
    Javascript 返回上一页
    Entity Framework 4.0新增对TSQL的支持
    .Net 4.0中支持的更加完善了协变和逆变
    c#4.0——泛型委托的协变、逆变
    JQuery 常用方法基础教程
    AspNetPager分页示例
    微软一站式示例代码浏览器
    UI与实体的映射
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854410.html
Copyright © 2011-2022 走看看