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;
            }

  • 相关阅读:
    反转字符串(指定子串不反转)
    字符串相同字符个数统计
    指针函数/回调函数
    simplest_dll 最简dll的创建与隐式调用(显式调用太麻烦,个人不建议使用)
    字符串的相关操作
    sizeof()函数求各类型变量所占空间的方法
    对于数组使用sizeof(a)和使用sizeof(a[0])
    交换两个数的三种方法
    最简字符串查找操作(静态顺序串,非链串)
    类模板 template<class T>
  • 原文地址:https://www.cnblogs.com/fyhui/p/2129191.html
Copyright © 2011-2022 走看看