• 浮点型二分法查找


    二分法查找据说真正能正确实现的,只有10%的程序员。

    本人最近需要用到在有序的浮点数列表中查找数据位置,没想到网络上居然没找到,只能自己写,写了两次才实现,这与整型二分法实现完全不一样,注意了。

            private int GetPosition(double xVal, double[] data)
            {
                int start = 0, end = data.Length, mid;

             //   Array.Sort(data);     //data是升序数组

                if (end <= 0) return -1;
                if (xVal < data[0] || xVal > data[end - 1]) return -1;

                for (int i = start; i < end; i++)
                {
                    mid = (start + end) / 2;
                    if (xVal < data[mid])
                    {

                        i = start;            //可不要
                        end = mid;
                    }
                    else if (xVal > data[mid])
                    {

                        i = start;            //可不要
                        start = mid;
                    }
                    else    //浮点型,可能一直不会到这,但是为了防止很精度的数在内存表现形式一样
                    {
                        return mid;
                    }
                }

                if (end - start <= 1)   //注意,这是退出点。只要不存在相等,最后肯定卡在两数中间
                {
                    return end;     //或return start,看需要
                }
                return -1;
            }

  • 相关阅读:
    KMP
    837B. Balanced Substring
    JDK7和JDK8新特性
    数据库索引的实现原理
    mysql索引总结----mysql 索引类型以及创建
    Java 8新特性终极指南
    类加载机制
    类加载过程
    深入理解java虚拟机 精华总结(面试)(转)
    几种常用的设计模式介绍(转)
  • 原文地址:https://www.cnblogs.com/fyhui/p/2129191.html
Copyright © 2020-2023  润新知