数据结构与算法一:算法复杂度分析
来源:互联网 发布:淘宝口腔无影灯 编辑:程序博客网 时间:2024/05/21 09:24
T(f(N)) = O(g(N)) 表示f(N)的增长率是小于g(N)的。 数学表达是f(N) <= cg(N) N>n0(c、n0是个常数)
T(f(N)) = θ(g(N)) 表示f(N)的增长率是等于g(N)的。 数学表达是f(N) = cg(N) N>n0(c、n0是个常数)
T(f(N)) = Ω(g(N)) 表示f(N)的增长率是大于g(N)的。 数学表达是f(N) >= cg(N) N>n0(c、n0是个常数)
复杂度有这么3种描述,通常我们用big o 来描述复杂度,通过求一个算法的最坏情况就可以获得,这种最坏情况就是一个上限了,同时要保证这是一个渐进上界,常量系数与低阶项都可以去掉。 例如3N^3+2N^2+1可以写成N^3
我们之所以不去求复杂度的平均值,是因为有时候比较难求,而且不能说明算法到底效率怎么样
我们求算法复杂度是基于一个简单的计算模型的,每个操作是一个时间单位。
计算复杂度是,由内向外进行计算,这样子比较方便。
下面是一个for循环的计算方法
int sum = 0;
for(int i=0, i<N; i++){ 循环N次 初始化耗1个单位,比较耗N+1个单位,自增耗N个单位, 加上下面的(4N+2)*N个单位总耗4N^2+4N+2
for(int j=0; j<N; j++){// 循环N次 初始化耗了1个单位, 比较N+1次耗了N+1个单位, 自增N次耗了N个单位, 加上下面语句2N个单位总共4N+2
sum += a[i][j]; // +与=耗了2个时间单位
}
}
最后T(f(N)) = O(N^2) (去除常量系数与低阶项,从内往外计算复杂度)
- 数据结构与算法一:算法复杂度分析
- 【数据结构与算法】复杂度度量与分析
- 数据结构与算法学习1——算法复杂度分析
- Java数据结构与算法分析(1)--算法复杂度概念
- 【数据结构】算法时间复杂度分析
- 数据结构基础 算法复杂度分析(一) 概念篇
- 数据结构与算法 -- 时间复杂度
- 数据结构与算法分析之02时间复杂度
- 【数据结构与算法】三 █算法复杂度█ 一 时间复杂度
- 数据结构之算法与算法时间复杂度
- 算法与数据结构 其一 算法时间复杂度
- 算法时间复杂度与空间复杂度分析
- 算法分析与时间复杂度
- 数据结构与算法分析(一)
- 【数据结构与算法分析(一)】排序
- 数据结构与算法分析 阅读笔记一
- 数据结构笔记-算法时间复杂度分析
- 数据结构与算法的分析 —— 平均时间复杂度 vs 分摊时间复杂度
- WRK笔记:为一块VA区域创建PDE
- 第2周项目3:小试循环(3)
- 解决Struts2.3.2配合Tomcat8出现could't clear cache问题
- 简介AngularJS中使用factory和service的方法
- 要么读书,要么健身
- 数据结构与算法一:算法复杂度分析
- 关于AttachCurrentThread和DetachCurrentThread的故事
- 第2周项目3:小试循环(4)
- 6 Javascript:函数
- 递归将整数转字符串
- 颠倒的价牌
- 面试中的 10 大排序算法
- 操作系统之进程的描述与控制
- php中的魔术方法