(1)时间频度
一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。

一个方法执行一次需要时间10秒或者多少秒,那么执行n次的总时间,那就n乘以 10,弄个数学公式 10 x n = total time,

10 这个值是固定的,就像去买菜,菜的单价是固定的,多少钱一斤。变化的值是你要买多少斤。

总数 T(n),一个数学公式: T(n) = n * X;就是关于一个变量n的一阶表达式,简单的数学吧。

计算机里面针对的就是一个总的执行时间 = 关于一个变量执行次数的函数。

常见的就是一层for循环:  T(n) = n * X;循环n次,每次执行时间X。

(2)时间复杂度
一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,(就是上面说的概念了)

若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)  /   f(n)   的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。

记作:T(n)   =   O(f(n)), 称  O(f(n))  为算法的渐进时间复杂度,简称时间复杂度

实际举例子:

继续使用上面的常见的一层for循环举例。

T(n) = n * X +5; (X 是执行一次循环体需要的时间,加个5可能是在执行for循环之前需要花费5的时间去做点初始化的事情。)

当 n 趋近于无穷大的时候,T(n) 的大小就和后面的5 无关了,

基本就可以看成 T(n) = n * X  (X 是常量)为了方便看,直接把X 换成6吧,T(n) = n * 6

现在再来一个关于n的函数 f(n),使得   T(n)   /    f(n)   =   常量,这里就是 6,那么函数 f(n) = n;

T(n)  /  f(n)  =  (n * 6 )   /   n   =   6

按照上面的名次解释,T(n)  = O(f(n))  =  O(n)  ;

一层for循环的时间复杂度就是O(n)

y = ax + b;

想想高中时候,这个函数的图是怎么画的,xy轴的二维图里面,一条斜着向上的直线。

T(n)  =  n * X +5;

不会高中数学的,咱现场分析一下,当 n 无穷大的时候,后面的5,就忽略不计,n无穷大,T(n)也就无穷大。

对 T(n) 求极限值的公式就等价于  T(n)  =  n * X;

同理分析下面的这个带平方的公式。

T(n)  =  4n²  -  2n  + 2

在 T(n) = 4n²  - 2n + 2中,对T(n)的值求极限,在n无穷大的时候,上面的公式,就等价于 T(n)  =  4n²

就有 f(n) = n²,使得  T(n)  /  f(n)  的极限值为4,那么

T(n)  = O(f(n)) = O(n²),

也就是时间复杂度为   O(n²)

咱常见的时间复杂度是 O(n²)的代码实例,一般都是2层for循环。

想想简单的2层嵌套for循环,假设里外都执行n次,那么整个嵌套for循环执行完,是不是得执行n²次里面的循环体

T(n) = n² * X + 10;  执行一次循环体需要X秒,再给10秒的时间初始化一下准备工作。

那么这个f(n) 是不是就 n² ; 也就是说显而易见的 f(n) = n²;

使得  T(n)  /  f(n)  的极限值为 X

T(n)  = O(f(n)) = O(n²)

这个也是成立的。

y =ax² + bx +c

想想高中的图

上面说了O(n)和O(n²),这个O(1),怎么理解。有何常见的例子吗?

O(1),说来也简单,也就是说这个的执行时间是不随着次数的增加而增加的,一般比如好多的单利模式,都只是初始化一次,然后一直的被使用。应该算是O(1)的例子吧。

至于下面说的其它的例子,那么复杂的时间复杂度,我就无招了。

时间复杂度:O(1)、O(n)、O(n²)、O(nlogn)等是什么意思,白话文解释专业术语。相关推荐

  1. 时间复杂度O(1) O(n) O(logn) O(nlogn)是什么意思?

    在你渐渐迷失在你的人生道路上的时候,千万不要因为走的太久,而忘记了我们为什么出发,做码农,也要清楚自己如何才能用有效的土地种植出 出色的产品,于是细节就需要把握一下. 如果你有兴趣可以关注一下公众号 ...

  2. 时间复杂度O(1),O(n),O(logn),O(nlogn)的意思

    由于平时接触算法比较少,今天看资料看到了o(1),都不知道是什么意思,百度之后才知道是什么意思. 描述算法复杂度时,常用o(1), o(n), o(logn), o(nlogn)表示对应算法的时间复杂 ...

  3. 冒泡和快速排序的时间复杂度_八大排序算法性能分析及总结

    一.排序算法说明 排序的定义:对一个无序的序列进行排序的过程. 输入:n个数:a1,a2,a3,-,an. 输出:n个数的排列:a1,a2,a3,-,an,使得a1<=a2<=a3< ...

  4. 算法的时间复杂度与空间复杂度介绍

    本文主要介绍算法的时间复杂度和空间复杂度的相关知识. 1 概述 算法(Algorithm)是指用来操作数据.解决程序问题的方法. 对于同一个问题,使用不同的算法,也许最终得到的结果是相同的,但在执行该 ...

  5. 数据结构与算法一:时间频度和时间复杂度

    数据结构系列博客涉及内容: 一.初识数据结构和算法: 1.数据结构: 数据结构:是相互之间存在一种或多种关系的数据元素的集合 研究什么:数据的逻辑结构与物理结构以及它们之间的相互关系 数据结构包括:线 ...

  6. 分治法与蛮力法求最近点对问题(分治法时间复杂度O(nlogn))

    讲解分治法求最近点对问题的思想与算法实现. 利用分治法求最近点对与归并排序的结构上的相同,将时间复杂度降到真正意义上的O(nlogn)而不是O(nlognlogn). 1. 预处理:创建结构体Node ...

  7. 排序算法之 归并排序 及其时间复杂度和空间复杂度

    在排序算法中快速排序的效率是非常高的,但是还有种排序算法的效率可以与之媲美,那就是归并排序:归并排序和快速排序有那么点异曲同工之妙,快速排序:是先把数组粗略的排序成两个子数组,然后递归再粗略分两个子数 ...

  8. 快速选择算法的时间复杂度为什么是O(n)?

    一.引言 今天学了一个快速选择算法,这个算法跟快排差不多,只不过专门用来在选择数组中第k大/小的数时,可以免去将整个数组排序后选择第k个数.将整个数组排序再选择第k个数的时间复杂度是O(nlog(n) ...

  9. java时间复杂度计算_时间复杂度到底怎么算

    算法(Algorithm)是指用来操作数据.解决程序问题的一组方法.对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别. 那么我们应该如何去衡量不同 ...

  10. 时间复杂度到底怎么算?

    算法(Algorithm)是指用来操作数据.解决程序问题的一组方法.对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别. 那么我们应该如何去衡量不同 ...

最新文章

  1. windows下 nginx安装 使用
  2. numpy meshgrid 和 mgrid 的两个简单实例和解析
  3. mac改变文件权限git识别为修改的问题
  4. java 格式化位数_java数字如何格式化?
  5. Git Push 避免输入用户名和密码方法
  6. java frame清除控件_java – 清除JFrame的组件并添加新组件
  7. PL/SQL 存储过程
  8. node-webki 基本程序结构
  9. 上游供应链厂商确认高通已获准向华为出售4G芯片
  10. 计算机网络技术人员介绍,计算机网络技术专业介绍2021 计算机网络技术专业就业方向及前景...
  11. 关于范数与正则化详解(转)
  12. minecraftjava版光追_我的世界:光追技术终于开始测试?没想到网易版已更新狐狸生物?...
  13. 超级记忆/图像数字记忆 110位数字图像转换表 81-90
  14. matlab中灰色模型代码,灰色模型matlab代码
  15. Android 音频系统
  16. 错误:.TemplateProcessingException: Exception evaluating SpringEL expression:
  17. 《程序员的职业修养》读后感(一):专业主义
  18. 分布式理论(六)—— Raft 算法
  19. Codeforces 596D Wilbur and Trees
  20. java-php-python-springboot志愿者服务平台计算机毕业设计

热门文章

  1. 步态分析——信度以及效度
  2. 一天天学WG--第一天
  3. dell无法启动计算机,戴尔电脑装系统蓝屏无法启动怎么办
  4. 使用任意波形(或函数)发生器产生想要的任意信号
  5. 计算机wifi怎么打不开,电脑的wifi打不开了怎么办
  6. 隐马尔可夫模型拼音汉字输入法
  7. 航空插头的环境性能科普
  8. html怎么设置字体的背景颜色,html怎样设置字体的背景颜色?
  9. mysql got signal 11_mysqld got signal 11问题定位
  10. 锁定计算机和睡眠有什么区别,电脑休眠和睡眠哪个好?电脑计算机睡眠和休眠有什么区别...