现在的位置: 首页 > 综合 > 正文

两分查找法的两种解法

2012年06月29日 ⁄ 综合 ⁄ 共 978字 ⁄ 字号 评论关闭

解法一:使用递归调用:

代码如下:

 static int LiangfenChaZhao(int low, int high, int[] a, int value)
        {
            if (low > high)
                return -1;

            int i = (low + high) / 2;

            if (a[i] >= value)
            {
                if (a[i] == value)
                    return i;
                else
                    return LiangfenChaZhao(low, i - 1, a, value);
            }

            else
            {
                return LiangfenChaZhao(i + 1, high, a, value);
            }

        }

解法二、循环遍历:

 static int testforfun(int[] a, int value)
        {
            int lower = 0;
            int high = a.Length-1;
            int middle;

            while (lower<=high)
            {
                middle = (high + lower) / 2;

                if (a[middle] == value)
                    return middle;

                if (a[middle] > value)
                {
                    high = middle-1;
                }
             
                if (a[middle] < value)
                {
                    lower = middle+1;

                }
           
            }
            return -1;
        }

抱歉!评论已关闭.