码迷,mamicode.com
首页 > 编程语言 > 详细

递归算法的时间复杂度分析

时间:2019-05-16 09:33:35      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:简便   操作   递推   start   search   pre   二分   有序数组   关系   

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))

例子

   /**
     * 二分查找递归实现。
     * @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)=n

递归算法的时间复杂度分析

标签:简便   操作   递推   start   search   pre   二分   有序数组   关系   

原文地址:https://blog.51cto.com/13559120/2395241

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!