【算法基础】时间复杂度:大O阶方法
前言:
数据结构与算法中,数据结构就像一个厨房(有食材,有餐具,各种炊具),而算法就像厨师脑海中的菜谱,只有好的食材(数据),整洁有序的厨房(数据组织),简洁明了的菜谱(算法),厨师才能做出美味(程序正确高效的运行)
衡量算法的好坏可以通过两种方式
1.事后统计:没啥用
2.事先估计:时间复杂度估算,空间复杂度估算
时间复杂度最为常用,在同等输入规模下,通过估计代码的执行次数,从而估计代码的时间复杂度!
计算时间复杂度通过——大O阶方法
1.用常数取代运行时间中的所有加法常数
2.在修改后的运行次数函数中,只保留最高阶项
3.如果最高阶项存在且不是1,则去除与这个项相乘的常数
得到大O阶
n++; //1.执行次数为1
function(n); //2.执行次数为n
int i,j;
for(i=0;i<n;i++) //3.执行次数为n²
{function(i);
}
for(i=0;i<n;i++)//从0~n-1共n次
{for(j=i;j<n;j++)//对应外层循环,从0~n-1,每次循环的执行次数分别为n,n-1,n-2,n-3,,,1{/*时间复杂度为O(1)的程序步骤序列*/}
}
//循环次数为1+。。。。。+(n-3)+(n-2)+(n-1)+n=n(1+n)/2
//4.所以执行次数为n(1+n)/2
步骤:
1.分析代码片段的执行次数
2.得到执行次数的函数F(n)=1+n+n²=n(1+n)/2=3/2n²+3/2n+1
3.用常数取代运行时间中的所有加法常数----------------------------------------------->得到F(n)=An²+An+1(A为常数)
4.在修改后的运行次数函数中,只保留最高阶项-------------------------------------->得到F(n)=An²
5.如果最高阶项存在且不是1,则去除与这个项相乘的常数------------------------>最高阶项存在,不是1,去掉常数A
最终得到O(n)=n²,时间复杂度为n²
先要得到执行次数的函数,再求O(n)。
O(1)<O(log(x))<O(x)<O(x*log(x))<O(x2)<O(x3)<O(2^n)<O(n!)<O(n^n)
突然发现数学没学好,后悔呀!
【算法基础】时间复杂度:大O阶方法相关推荐
- [算法基础]--时间复杂度和空间复杂度
感谢原文作者:https://blog.csdn.net/zolalad/article/details/11848739 算法的时间复杂度和空间复杂度-总结 通常,对于一个给定的算法,我们要做 两项 ...
- 算法基础-十大排序算法及其优化(文末有抽奖福利哦)
算法基础-十大排序算法及其优化 算法基础-十大排序算法及其优化 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kw1LA5Q4-1607527572080)(/uplo ...
- a*算法的时间复杂度_算法基础——时间复杂度amp;空间复杂度
关注.星标公众号,学点计算机知识. 整理:persistenceBin 今天来跟大家继续分享一下数据结构的基础知识--算法效率的度量:时间复杂度和空间复杂度.首先来跟大家分享一下在电影<复仇者联 ...
- C语言数据结构-程序设计与算法基础II-电大同步进度
第一讲-数据结构基础概念 https://blog.csdn.net/aiqq136/article/details/115209556 第二章线性表 https://blog.csdn.net/ai ...
- 简单分析算法的时间复杂度
目录 一.什么是算法的时间复杂度 二.如何分析一个算法的时间复杂度 1.有确定次数的算法 2.次数不确定的算法 一.什么是算法的时间复杂度 时间复杂度是一个函数 ,定性描述一个算法(程 ...
- 《大话数据结构》第2章 算法基础 2.9 算法的时间复杂度
2.9 算法的时间复杂度 2.9.1 算法时间复杂度定义 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就 ...
- 算法的时间复杂度和空间复杂度评估
通常,对于一个给定的算法,我们要做 两项分析.第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式.数学归纳法等.而在证明算法是正确的基础上,第二部就是分析算法的 ...
- 计算算法的时间复杂度和空间复杂度
算法的时间复杂度和空间复杂度-总结 通常,对于一个给定的算法,我们要做 两项分析.第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式.数学归纳法等.而在证明算法 ...
- 如何计算算法的时间复杂度
原地址:http://www.nowamagic.net/librarys/veda/detail/2195 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变 ...
最新文章
- 针对IT人员的四月热点新书推荐
- linux yum install 与 yum groupinstall 区别
- [译]学习IPython进行交互式计算和数据可视化(四)
- 4、C语言面试笔试--内存操作-指针
- PHP付费资源下载交易平台网站源码
- 一张图看懂python编程
- 实现点击打卡_打卡APP哪家强?快来看!这里有一款超好用的轻量级免费的习惯养成APP!...
- 谈谈这些年来我为什么一直在坚持
- oracle改表结构非空字段类型,oracle 表结构的非完全复制
- 两向量点乘坐标运算_向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读...
- Thinkpad E430c使用u盘安装系统
- 宏基因组公众号4年精华文章目录,收藏贴(2021.1更新)
- JAVA垃圾收集器之Parallel Scavenge收集器
- supervisor+nginx+cesi
- mysql 指定ip段 掩码_网络ip段划分子网掩码
- 矩阵理论| 特殊矩阵:正定矩阵
- 袁卫统计学第4版笔记和课后习题答案
- 假显卡测试软件,GPU-Z 2.26.0发布:可检测多款假冒显卡
- 移动端按住说话功能实现
- MyBatis之通用mapper