数据结构与算法(C++)-- 算法分析
数据结构与算法(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++)-- 算法分析相关推荐
- java架构师进阶独孤九剑系列(一):数据结构与算法
" 架构师进阶系列之独孤九剑,这套秘籍如果你能完整学会,年薪至少60万起,今天是架构师进阶连载开启篇. Java程序员成长为架构师进阶步骤 未来我会用1-2个月在实战为大家讲解架构师的九大必 ...
- 【数据结构与算法基础概念】
#数据结构与算法 课程目标 课程内容 一.数据结构与算法概述 1.1 什么是数据结构 1.2 数据结构分类 逻辑结构的分类 物理结构的分类 1.3什么是算法 1.4算法初体验 二. 算法分析 2.1 ...
- python数据结构与算法分析_数据结构与算法(Python版)
为什么研究数据结构与算法 本周带大家进入Python版数据结构与算法的学习.想必大家都听过"算法"一词,算法的学习对编程者来说是至关重要的.首先我们先了解一下为什么要研究数据结构与 ...
- Python数据结构与算法(1.7)——算法分析
Python数据结构与算法(1.7)--算法分析 0. 学习目标 1. 算法的设计要求 1.1 算法评价的标准 1.2 算法选择的原则 2. 算法效率分析 2.1 大 OOO 表示法 2.2 常见算法 ...
- 《数据结构与算法:Python语言描述》一1.3算法和算法分析
本节书摘来自华章出版社<数据结构与算法:Python语言描述>一书中的第1章,第1.3节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看 1.3算法 ...
- 数据结构与算法|马踏棋盘算法(小甲鱼)C语言代码的算法分析
马踏棋盘算法(骑士周游问题)的算法分析 C语言代码部分来自小甲鱼的<数据结构与算法> 文章目录 马踏棋盘算法(骑士周游问题)的算法分析 一.C语言代码实现 二.代码分析与算法思路 题目要求 ...
- 数据结构与算法分析 收获总结 第1章 数据结构和算法
这学期学这门课到现在为止,还是感觉难度很大,当然老师可能讲得也有点偏离书本,有时候听得有点蒙. 干脆来根据教材写个总结,用的教材是 <数据结构与算法分析>C++ 第3版 电子工业出版社 第 ...
- 【Python数据结构与算法】(一)基本概念和算法分析
[Python数据结构与算法](一)基本概念和算法分析 ✨本文收录于<Python数据结构与算法>专栏,此专栏主要记录如何python学习数据结构与算法笔记以及练习题.
- 数据结构和算法概述及算法分析
一.数据结构和算法概述 B站学习视频 1.1首先我们为什么要学习数据结构? 数据结构和算法这门课程无论在哪个学校的计算机专业,都是一门必修课,因为这门课程非常重要的,是编程必备的基础,但是这门课程是一 ...
最新文章
- 使用Supervisor监控代码的修改 - cmd安装激活篇
- 台达伺服驱动器说明书_干货:伺服调机实例讲解
- java策略模式学习
- php 赋值给 dom对象,详解PHP原生DOM对象操作XML的方法
- Mirage学习笔记
- 第二十二篇 定义函数的三种形式以及函数的返回值
- c++ STL模板(一)
- Windows Server 2012的服务管理自动化
- c语言单片机烧写器,单片机烧写器是什么 烧写器怎么用
- Retrofit原理
- 计算机网络实验一(常见服务和静态IP设置)
- PS笔刷:73款动漫风格的云朵小草花朵
- 一篇文章搞懂 Hadoop RPC 到底是什么
- 按键精灵移动端系列 - IOS(苹果版)安装1.3.8 deb 下载地址
- Springboot启动报错-类文件具有错误的版本 61.0, 应为 52.0
- pe联想服务器装系统教程视频,演示联想电脑u盘重装系统xp教程
- 解决pycharm运行很慢的问题
- TypeError: strptime() takes no keyword arguments ValueError(“‘%s‘ is a bad directive in format ‘%s‘“
- 如何解决Mysql忘记用户名和密码
- oracle里面的long,long raw,raw,clob,blob区别