“时间复杂度”的理解
来源:互联网 发布:seo关键词优化外包 编辑:程序博客网 时间:2024/06/07 00:25
许多书籍和文章中对时间复杂度的解释是:定量描述了算法的运行时间。
这个定义当然无错,但却不够精确。尤其对初学的朋友来说,在理解上可能会造成一些偏差。
譬如,现有算法A和算法B,都是用于解决某问题,其中算法A的时间复杂度为O(1),算法B的时间复杂度为O(n),从理论上来分析,算法A的时间效率是要更高的。但是你却在实际操作过程中,发现算法B的运行时间更少(并非出于错误或偶然),这是怎么回事?是不是说明“时间复杂度”这一指标有缺陷呢?
如果你有类似疑惑,那么你大概是误会了“时间复杂度”这一指标的用意。
本文将用三词两句准确定位“时间复杂度”这一概念,并给出计算方法。
先给出我对“时间复杂度”的理解:预估随着问题规模(n)变化时,算法运行时间的上界。
显然地,关键词是:
预估:我们只需粗略计算其所在的数量级即可,不必过于精确。
问题规模:实际上想知道的是当规模越来越大时,算法能在多大程度上保持高效,是一种动态的展望。
上界:指的是算法运行的时间上界,也就是最慢会有多慢,即给出一个最坏的打算。
两句关键句:
我们关心的不是该算法最快能多快,而是最慢会有多慢。
我们关心的不是该算法在小规模场景是否很慢,而是在大规模场景是否很快。
0 0
- “时间复杂度”的理解
- 时间复杂度和空间复杂度的理解
- [数据结构] 时间复杂度的理解
- 算法的时间复杂度与空间复杂度的理解
- 数据结构中时间复杂度和空间复杂度的理解
- 堆排序时间复杂度的理解
- 对时间复杂度的简单理解
- 时间复杂度理解
- 时间复杂度基本理解
- 怎样理解时间复杂度和空间复杂度
- 堆排序时间复杂度理解
- 猴子睡觉前之一:时间复杂度的理解
- 时间复杂度——我理解的那种
- 时间复杂度与大O记法的理解
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 算法的时间复杂度
- select,epoll,poll比较(网络资源总结)
- leetcode 22. Generate Parentheses 递归
- adb出现cannot parse version string:kg01的解决方法
- Android Studio可能用到的快捷键
- 架构探险-从零开始写Javaweb框架读书笔记(2)
- “时间复杂度”的理解
- 归并排序
- 求逆元
- c++ 生成文件MD5
- Socket原理与编程基础
- xml元素类型PCDATA和CDATA的区别(DTD中)
- 字符串算法(KMP+MANACHER+EX_KMP)总结
- 决策树(七)--Boost及源码分析
- 字符串(替换空格-剑指offer!!!)