时间复杂度

目录

文章目录

前言

一、什么是时间复杂度?

二、如何描述时间复杂度?

1.不同数据规模的差异

2.复杂表达式简化

3.O(logn)中的log以什么为底?

总结



前言

        时间复杂度分析是学习算法必不可少的一环,干翻算法,先从认识时间复杂度开始!


提示:以下是本篇文章正文内容,下面案例可供参考


一、什么是时间复杂度?

         时间复杂度(算法的渐进时间复杂度):假设算法的数据规模为n,操作单元数量用函数f(n)表示,随着数据规模n的增大,算法执行时间的增长率和f(n)的增长率相同,这个增长趋势即为时间复杂度,记为O(f(n))。

        《算法导论》中说,O用来表示上界,当用它作为算法在最坏情况下运行时间的上界时,就是对任意数据输入的运行时间的上界。但实际应用中,我们更多地考虑了一般情况输入数据的形式对程序运行时间也有很大影响,数据用例不一样,时间复杂度也是不一样的。


二、如何描述时间复杂度?


1.不同数据规模的差异

        在决定使用哪些算法时,不是时间复杂度越低越好(因为简化后的时间复杂度忽略了常数项等),还要考虑数据规模。数据规模比较大时,就可以忽略常数项等,此时有如下算法时间复杂度排行:

        O(1) < O(logn) < O(n) < O(n^2) < O(n^3) < O(2^n)

        常数阶 < 对数阶 < 线性阶 < 平方阶 < 立方阶 < 指数阶


2.复杂表达式简化

        简化法:如O(2*n^2 + 10*n+1000)

        ①去常数项:O(2*n^2 + 10*n)

        ②去常数系数:O(n^2 + n)

        ③只保留最高项:O(n^2)

3.O(logn)中的log以什么为底?

用一个简单的例子来解释:

        O() = O(*

由2中简化规则可得

          O() = O( 

因此以什么为底可以忽略



总结

初识时间复杂度,个人感觉做题的时候多分析分析就能很好地掌握了~

       

你可能感兴趣的:(笔记,算法)