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