前言:
数据结构与算法中,数据结构就像一个厨房(有食材,有餐具,各种炊具),而算法就像厨师脑海中的菜谱,只有好的食材(数据),整洁有序的厨房(数据组织),简洁明了的菜谱(算法),厨师才能做出美味(程序正确高效的运行)
衡量算法的好坏可以通过两种方式
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阶方法相关推荐

  1. [算法基础]--时间复杂度和空间复杂度

    感谢原文作者:https://blog.csdn.net/zolalad/article/details/11848739 算法的时间复杂度和空间复杂度-总结 通常,对于一个给定的算法,我们要做 两项 ...

  2. 算法基础-十大排序算法及其优化(文末有抽奖福利哦)

    算法基础-十大排序算法及其优化 算法基础-十大排序算法及其优化 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kw1LA5Q4-1607527572080)(/uplo ...

  3. a*算法的时间复杂度_算法基础——时间复杂度amp;空间复杂度

    关注.星标公众号,学点计算机知识. 整理:persistenceBin 今天来跟大家继续分享一下数据结构的基础知识--算法效率的度量:时间复杂度和空间复杂度.首先来跟大家分享一下在电影<复仇者联 ...

  4. C语言数据结构-程序设计与算法基础II-电大同步进度

    第一讲-数据结构基础概念 https://blog.csdn.net/aiqq136/article/details/115209556 第二章线性表 https://blog.csdn.net/ai ...

  5. 简单分析算法的时间复杂度

    目录 一.什么是算法的时间复杂度 二.如何分析一个算法的时间复杂度 1.有确定次数的算法 2.次数不确定的算法 一.什么是算法的时间复杂度         时间复杂度是一个函数 ,定性描述一个算法(程 ...

  6. 《大话数据结构》第2章 算法基础 2.9 算法的时间复杂度

    2.9 算法的时间复杂度 2.9.1 算法时间复杂度定义 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就 ...

  7. 算法的时间复杂度和空间复杂度评估

    通常,对于一个给定的算法,我们要做 两项分析.第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式.数学归纳法等.而在证明算法是正确的基础上,第二部就是分析算法的 ...

  8. 计算算法的时间复杂度和空间复杂度

    算法的时间复杂度和空间复杂度-总结 通常,对于一个给定的算法,我们要做 两项分析.第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式.数学归纳法等.而在证明算法 ...

  9. 如何计算算法的时间复杂度

    原地址:http://www.nowamagic.net/librarys/veda/detail/2195 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变 ...

最新文章

  1. 针对IT人员的四月热点新书推荐
  2. linux yum install 与 yum groupinstall 区别
  3. [译]学习IPython进行交互式计算和数据可视化(四)
  4. 4、C语言面试笔试--内存操作-指针
  5. PHP付费资源下载交易平台网站源码
  6. 一张图看懂python编程
  7. 实现点击打卡_打卡APP哪家强?快来看!这里有一款超好用的轻量级免费的习惯养成APP!...
  8. 谈谈这些年来我为什么一直在坚持
  9. oracle改表结构非空字段类型,oracle 表结构的非完全复制
  10. 两向量点乘坐标运算_向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读...
  11. Thinkpad E430c使用u盘安装系统
  12. 宏基因组公众号4年精华文章目录,收藏贴(2021.1更新)
  13. JAVA垃圾收集器之Parallel Scavenge收集器
  14. supervisor+nginx+cesi
  15. mysql 指定ip段 掩码_网络ip段划分子网掩码
  16. 矩阵理论| 特殊矩阵:正定矩阵
  17. 袁卫统计学第4版笔记和课后习题答案
  18. 假显卡测试软件,GPU-Z 2.26.0发布:可检测多款假冒显卡
  19. 移动端按住说话功能实现
  20. MyBatis之通用mapper

热门文章

  1. FastAI 课程学习笔记 lesson 1:宠物图片分类
  2. 揭富人与穷人21个不同思维 看富豪如何脱颖而出
  3. 论文阅读工具ReadPaper
  4. Swift与LLVM-Clang原理与示例
  5. CUDA 11功能清单
  6. 如何保证Qt状态机的最佳性能
  7. TensorFlow基础剖析
  8. CVPR2020论文解析:视频分类Video Classification
  9. Docker的安装和版本详细介绍
  10. php.ini Xdebug配置