遞歸算法的時間複雜度分析

Master定理也叫主定理。它提供了一種經過漸近符號表示遞推關係式的方法。應用Master定理能夠很簡便的求解遞歸方程。算法

T(N)=a(N/b)+N^d
其中 n 表示原始的樣本量, a 表示子過程發生的次數,n/b 表示子過程的樣本量,d 表示除子過程其餘的操做,通常爲常量數組

  • log(b,a)<d 則遞歸算法複雜度爲O(n^log(b,a))
  • log(b,a)=d 則遞歸算法複雜度爲O(n^d*log(b,a))
  • log(b,a)>d 則遞歸算法複雜度爲O(n^d))

例子ide

/**
     * 二分查找遞歸實現。
     * @param srcArray  有序數組
     * @param start 數組低地址下標
     * @param end   數組高地址下標
     * @param key  查找元素
     * @return 查找元素不存在返回-1
     */
    public static int binSearch(int srcArray[], int start, int end, int key) {
        int mid = (end - start) / 2 + start;
        if (srcArray[mid] == key) {
            return mid;
        }
        if (start >= end) {
            return -1;
        } else if (key > srcArray[mid]) {
            return binSearch(srcArray, mid + 1, end, key);
        } else if (key < srcArray[mid]) {
            return binSearch(srcArray, start, mid - 1, key);
        }
        return -1;
    }

a = 2,b=2,d=0
則算法複雜度爲 n^log(b,a)=ncode

相關文章
相關標籤/搜索