常用数学函数(数据结构所需基础)-不定期更新中...

常用数学函数(数据结构所需基础)-不定期更新中…

  1. T(n):时间频度(或语句频度)->一条语句的执行次数称之为语句频度
  2. f(n)一般是指算法中最大的语句频度(时间频度),一般是最深层内的循环的语句频度
  3. O(f(n)) 时间复杂度 说的是时间增量与时间频度成正比 即当n趋近于个很大的数时 有T(n)=O(f(n))
for (int i = 0; i < n; i++) {    //频度 n+1
    for (int k = 0; k < n; k++) {  //频度 n*(n+1)
        int m = i + k;   //频度 n*n
        for (int j = 0; j < n; j++) {  //频度 n*n(n+1)
            Log.e("MM", "jj:>>>" + j);//频度 n*n*n
        }
    }
}

例(上述代码):
以上的语句频度即时间频度用T(n)表示: T(n) 是矩阵阶数n的函数
求和计算得出:T(n) = 2n^3+3n^2+2n+1;
当问题无穷大时,T(n)的数量级称为算法的渐进时间复杂度,标记为: T(n) = O(f(n))(称为大O标记) 或 (不常用)T(n)∈O(n^),
表示问题规模n无限增大时,算法的执行时间的增长率和f(n)的增长率相同,简称时间复杂度
f(n)一般是指算法中最大的语句频度(时间频度),一般是最深层内的循环的语句频度:
T(n) = 2n^3+3n^2+2n+1 -> f(n) = n^3, 即 时间复杂度为 O(n^3),

{
    int  temp;
    temp = 0;
    x=y;
    y=temp;
}

例(上述代码):
语句的执行频度为1,算法的执行时间是一个与问题规模无关的常数,所以算法的时间复杂度为常阶数,不管这个常数再大,它的时间复杂度都为T(n)=O(1)。

常用数学公式

斐波那契数

F 0 = 1 , F 1 = 1 , F 2 = 2 , F 3 = 3 , F 4 = 5 , . . . , F i = F i 1 F i 2

猜你喜欢

转载自blog.csdn.net/harisuperman/article/details/81018442