zoukankan      html  css  js  c++  java
  • 浮点型二分法查找

    二分法查找据说真正能正确实现的,只有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;
            }

  • 相关阅读:
    Redis持久化(八)
    Redis通用命令(七)
    Redis数据结构(六)
    Redis数据结构(五)
    Redis数据结构(四)
    Redis数据结构(三)
    nodename nor servname provided, or not known
    edis.clients.jedis.exceptions.JedisDataException: MISCONF Redis is configured to save RDB snapshots,
    Redis与Java的链接Jedis(二)
    高并发Redis(Mac)环境配置(一)
  • 原文地址:https://www.cnblogs.com/fyhui/p/2129191.html
Copyright © 2011-2022 走看看