1.1.22

上次更新:2019-04-17
发现了题解错误/代码缺陷/排版问题?请点这里:如何:提交反馈

解答

按照书中的提示增加一个保存深度的参数。

代码

class BinarySearch
{
    static void Main(string[] args)
    {
        int[] array = new int[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        rank(9, array);
    }

    //重载方法,用于启动二分查找
    public static int rank(int key, int[] a)
    {
        return rank(key, a, 0, a.Length - 1, 1);
    }

    //二分查找
    public  static int rank(int key, int[] a, int lo, int hi, int number)
    {

        for (int i = 0; i < number; ++i)
        {
            Console.Write(" ");
        }
        Console.WriteLine($"{number}: {lo} {hi}");

        if (lo > hi)
        {
            return -1;
        }

        int mid = lo + (hi - lo) / 2;

        if (key < a[mid])
        {
            return rank(key, a, lo, mid - 1, number + 1);
        }
        else if (key > a[mid])
        {
            return rank(key, a, mid + 1, hi, number + 1);
        }
        else
        {
            return mid;
        }
    }
}
上一题 下一题