• 浮点型二分法查找


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

  • 相关阅读:
    本周总结
    本周总结:用户故事和用户场景
    排球比赛规则说明书
    我与计算机
    官网地址备份
    连续自然数序列,求取中位数方案
    Spark 实现自定义对象sequenceFile方式存储,读写示例(scala编写)
    hbase 异常
    python_初步
    redis_入门网址
  • 原文地址:https://www.cnblogs.com/fyhui/p/2129191.html
Copyright © 2020-2023  润新知