数据结构与算法(C++)– 算法分析


算法分析包括:时间复杂度和空间复杂度分析。以下主要是时间复杂度的分析。


1、数学定义

  • O 表示前面是后面的下界,后面是前面的上界
  • Ω 表示前面是后面的上界,后面是前面的下界


2、运算法则

  • 计算大O时,忽略低阶项和常数因子。

    • T(N) = O(N^2) = O(2N^2) = O(N^2+N)
  • 可以用求极限 lim f(N)/g(N) 来确定 f(N) 和 g(N) 的相对增长率,必要时可以使用洛必达法则。
    • 极限 = 0: f(N) = o(g(N) )
    • 极限是常数但!= 0: f(N) = θ(g(N) )
    • 极限 = 正无穷: g(N) = o(f(N) )
    • 极限不存在:无关系

3、运行时间的计算

  • 分析算法的时间复杂度时,不考虑内存访问时间。
  • 若无指定,所求的时间复杂度用最坏的情况表示
  • 有时也会用平均时间来衡量,但通常准确计算平均时间比较困难

时间计算的一般法则:

  • for 循环:O(N)
  • 嵌套 for 循环(n层):O(N^n)
  • 顺序语句:各个语句的运行时间求和
  • if/else 语句:判断时间 + 两者较长

时间复杂度排序:


4、最大子序列和

求一个序列中,连续元素和最大的子序列

int maxSubSum(const vector<int>& a)
{int maxSum = 0; thisSum = 0;for(int i = 0; j<a.size(); ++j){thisSum += a[j];if(thisSum > maxSum)maxSum = thisSum;else if(thisSum < 0)thisSum = 0;}return maxSum
}
  • 时间复杂度为 O(N)
  • 如果当前序列和大于当前的最大子序列和,更新最大子序列和
  • 如果序列和 < 0 表示这将不会对后面和做出任何贡献,舍弃

数据结构与算法(C++)-- 算法分析相关推荐

  1. java架构师进阶独孤九剑系列(一):数据结构与算法

    " 架构师进阶系列之独孤九剑,这套秘籍如果你能完整学会,年薪至少60万起,今天是架构师进阶连载开启篇. Java程序员成长为架构师进阶步骤 未来我会用1-2个月在实战为大家讲解架构师的九大必 ...

  2. 【数据结构与算法基础概念】

    #数据结构与算法 课程目标 课程内容 一.数据结构与算法概述 1.1 什么是数据结构 1.2 数据结构分类 逻辑结构的分类 物理结构的分类 1.3什么是算法 1.4算法初体验 二. 算法分析 2.1 ...

  3. python数据结构与算法分析_数据结构与算法(Python版)

    为什么研究数据结构与算法 本周带大家进入Python版数据结构与算法的学习.想必大家都听过"算法"一词,算法的学习对编程者来说是至关重要的.首先我们先了解一下为什么要研究数据结构与 ...

  4. Python数据结构与算法(1.7)——算法分析

    Python数据结构与算法(1.7)--算法分析 0. 学习目标 1. 算法的设计要求 1.1 算法评价的标准 1.2 算法选择的原则 2. 算法效率分析 2.1 大 OOO 表示法 2.2 常见算法 ...

  5. 《数据结构与算法:Python语言描述》一1.3算法和算法分析

    本节书摘来自华章出版社<数据结构与算法:Python语言描述>一书中的第1章,第1.3节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看 1.3算法 ...

  6. 数据结构与算法|马踏棋盘算法(小甲鱼)C语言代码的算法分析

    马踏棋盘算法(骑士周游问题)的算法分析 C语言代码部分来自小甲鱼的<数据结构与算法> 文章目录 马踏棋盘算法(骑士周游问题)的算法分析 一.C语言代码实现 二.代码分析与算法思路 题目要求 ...

  7. 数据结构与算法分析 收获总结 第1章 数据结构和算法

    这学期学这门课到现在为止,还是感觉难度很大,当然老师可能讲得也有点偏离书本,有时候听得有点蒙. 干脆来根据教材写个总结,用的教材是 <数据结构与算法分析>C++ 第3版 电子工业出版社 第 ...

  8. 【Python数据结构与算法】(一)基本概念和算法分析

    [Python数据结构与算法](一)基本概念和算法分析 ✨本文收录于<Python数据结构与算法>专栏,此专栏主要记录如何python学习数据结构与算法笔记以及练习题.

  9. 数据结构和算法概述及算法分析

    一.数据结构和算法概述 B站学习视频 1.1首先我们为什么要学习数据结构? 数据结构和算法这门课程无论在哪个学校的计算机专业,都是一门必修课,因为这门课程非常重要的,是编程必备的基础,但是这门课程是一 ...

最新文章

  1. 使用Supervisor监控代码的修改 - cmd安装激活篇
  2. 台达伺服驱动器说明书_干货:伺服调机实例讲解
  3. java策略模式学习
  4. php 赋值给 dom对象,详解PHP原生DOM对象操作XML的方法
  5. Mirage学习笔记
  6. 第二十二篇 定义函数的三种形式以及函数的返回值
  7. c++ STL模板(一)
  8. Windows Server 2012的服务管理自动化
  9. c语言单片机烧写器,单片机烧写器是什么 烧写器怎么用
  10. Retrofit原理
  11. 计算机网络实验一(常见服务和静态IP设置)
  12. PS笔刷:73款动漫风格的云朵小草花朵
  13. 一篇文章搞懂 Hadoop RPC 到底是什么
  14. 按键精灵移动端系列 - IOS(苹果版)安装1.3.8 deb 下载地址
  15. Springboot启动报错-类文件具有错误的版本 61.0, 应为 52.0
  16. pe联想服务器装系统教程视频,演示联想电脑u盘重装系统xp教程
  17. 解决pycharm运行很慢的问题
  18. TypeError: strptime() takes no keyword arguments ValueError(“‘%s‘ is a bad directive in format ‘%s‘“
  19. 如何解决Mysql忘记用户名和密码
  20. oracle里面的long,long raw,raw,clob,blob区别

热门文章

  1. caffe中通过prototxt文件查看神经网络模型结构的方法
  2. 20155317 2016-2017-2 《Java程序设计》第十学习总结
  3. 容器set和multiset
  4. webx3 日志系统级别问题
  5. WSS 扩展文件夹的属性--如何给文件夹添加扩展字段
  6. python中获取中位数
  7. Exchange Tech Issues 参考网站
  8. POJ 3436 ACM Computer Factory(最大流+路径输出)
  9. 《一江春水向东流》——任正非
  10. JavaScript跨域总结与解决办法(转)