数据结构学习笔记——算法复杂性分析
来源:互联网 发布:网络英语考试时间 编辑:程序博客网 时间:2024/06/16 07:24
算法的复杂性的高低体现在运行该算法所需要的计算机资源的多少上,所需要的资源越多,该算法的复杂性越高;反之,所需要的资源越少,该算法的复杂性越低。计算机的资源,最重要的是时间和空间资源。因此,算法的复杂性有时间复杂性和空间复杂性之分。在这里主要讨论时间复杂性。
一般来说,有3种情况下的时间复杂性,即最坏情况、最好情况和平均情况下的时间复杂性,
其中,
可操作性最好且最有实际价值的是最坏情况下的时间复杂性。
几种常用的渐进符号
渐进符号O (大欧)
如果存在正的常数
根据符号
O(1) 表示计算时间为常数。O(n) 称为线性阶。O(n2) 称为二次阶,O(n3) 称为三次阶,而O(2n) 称为指数阶。
O(logn)<O(n)<O(nlogn)<O(n2)
渐进符号Ω (大欧米伽)
如果存在正的常数
渐进符号Θ (西塔)
定义
渐进符号o (小欧)
如果对于任意给定的
也可以这样理解:
O :上界。相当于”<=”o :非紧的上界。相当于”<”Ω :下界。相当于”>=”Θ :紧确界。相当于”=”在大多数情况下,考虑的是最坏情况下的时间复杂性,采用
O 描述算法复杂性为更方便与实用。
以排序为例,你可以很容易找出问题的上界O,但你很少去考虑问题的下界,下界往往也并不好找。
关于O,有
O(f)+O(g)=O(max(f,g))
O(f)+O(g)=O(f+g)
O(f)O(g)=O(fg)
如果g(N)=O(f(N)) ,则O(f)+O(g)=O(f)
O(Cf(N))=O(f(N)) ,其中C是一个正的常数
f=O(f) 注:本节内容参考了《算法设计与分析(王晓东)》
- 数据结构学习笔记——算法复杂性分析
- 算法学习(一)---复杂性分析
- 数据结构学习笔记0——算法分析
- 算法复杂性分析
- 算法复杂性分析
- 算法之美——算法复杂性
- 【算法】数据结构与算法分析学习笔记——第三章习题选做Josephus问题
- 【算法】数据结构与算法分析学习笔记——第四章AVL树C语言实现
- 【算法】数据结构与算法分析学习笔记——各类二叉查找树的吐血整理
- 数据结构与算法分析_学习笔记
- 数据结构与算法分析学习笔记
- 数据结构学习笔记(1)算法分析
- 数据结构学习笔记1(算法分析)
- 数据结构与算法分析 学习笔记
- 数据结构与算法分析学习笔记---第一章
- 《数据结构与算法分析》学习笔记
- 数据结构与算法分析学习笔记
- 数据结构和算法分析学习笔记
- 排序 Codeforces612D The Union of k-Segments
- 深入浅出Java类和对象的初始化
- c语言变量与常量
- 使用Spring MVC统一异常处理实战
- C#中timer类 在C#里关于定时器类就有3个
- 数据结构学习笔记——算法复杂性分析
- hdu大学生程序设计竞赛(2015’12)1006 01 Matrix
- Hdu 2099之解题报告
- set -e
- Makfile wildcard:扩展通配符, notdir:去除路径, patsubst:替换通配符
- pip安装使用官方的源无法安装问题解决
- Android studio使用百度SDK
- C++11网络编程
- Day02-转义、常变量、printf和scanf、命名、驼峰标志、注释