第四章 数据结构与算法之算法基础(时间复杂度、空间复杂度、稳定性详述)
1、时间复杂度
(1)常数时间操作:一个操作的时间不以样本的数据量为转移,每次都是固定时间。
发生场景:常见的算术运算、位运算、赋值、比较、自增、自减操作、数组寻址操作。
常数时间操作示例:数组结构按位(索引)查找元素
查找数组的第n个元素:(1)计算实际内存地址:通过存储区的起始地址Loc (e0)加上逻辑地址(第i个元素)与存储单元大小(c)的乘积计算。(2)根据内存地址直接取出元素。
- 非常数时间操作实例:链表结构按位查找元素
查找链表的第n个元素:(1)先找到头节点(2)循环遍历往后,直到找到第n个节点返回
(2)时间复杂度
算法所需时间:常数时间操作次数
示例**:重复遍历要排序的数列,一次比较俩个元素,顺序错误则交换位置**,即冒泡排序
算法步骤:
Ⅰ、首先从原始数组中选择最小的1个数据,将其和位于第1个位置的数据交换。
Ⅱ、接着从剩下的n-1个数据中选择次小的1个元素,将其和第2个位置的数据交换
Ⅲ、然后,这样不断重复,直到最后两个数据完成交换。最后,便完成了对原始数组的从小到大的排序。
题目:选择排序 | 8,7,5,9,0 | 时间复杂度 |
---|---|---|
第一步 | 遍历1到n的数据,找到最小值0,0的位置和第一个值的位置进行交换 | 遍历时间复杂度:5,比较时间复杂度:5,交换时间复杂度:1 |
第二步 | 遍历2到n的数据,找到最小值5,5的位置和第二个值的位置进行交换 | 遍历时间复杂度:4,比较时间复杂度:4,交换时间复杂度:1 |
第三步 | 遍历3到n的数据,找到最小值7,7的位置和第三个值的位置进行交换 | 遍历时间复杂度:3,比较时间复杂度:3,交换时间复杂度:1 |
第四步 | 遍历4到n的数据,找到最小值8,8的位置和第四个值的位置进行交换 | 遍历时间复杂度:2,比较时间复杂度:2,交换时间复杂度:1 |
总结公式 | 2aN的平方+bN+C | |
时间复杂度 | O(n的平方),不关注低阶项,不关注系数 |
- 时间复杂度: O(忽略掉系数的高阶项),即常数时间操作次数的表达式,只要把最高阶项留下,低阶项都去掉,高阶项的系数也去掉。
2、空间复杂度
- 算法存储空间:一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。
- 空间复杂度:一个算法在运行过程中临时占用存储空间大小的量度,即变量的个数,主要通过函数在运行时候显式申请的额外空间来确定。
范例:同样参考上述的选择排序
题目:选择排序 | 8,7,5,9,0 | 空间复杂度 |
---|---|---|
第一步 | 遍历1到n的数据,找到最小值0,0的位置和第一个值的位置进行交换 | 临时变量存储0,wsap(8,0),现在顺序0,7,5,9,8 |
第二步 | 遍历2到n的数据,找到最小值5,5的位置和第二个值的位置进行交换 | 临时变量存储5,swap(7,5),现在顺序0,5,7,9,8 |
第三步 | 遍历3到n的数据,找到最小值7,7的位置和第三个值的位置进行交换 | 不用临时变量,现在顺序0,5,7,9,8 |
第四步 | 遍历4到n的数据,找到最小值8,8的位置和第四个值的位置进行交换 | 临时变量存储8,swap(9,8),现在顺序0,5,7,8,9 |
临时变量个数 | 用了n-2个临时变量,即O(n-2) | |
空间复杂度 | 平均O(1),所有的临时变量都通过一个临时变量的空间创建 |
- 空间复杂度:
最好,不交换,不用临时变量,O(0)
最坏,每次交换,用n-1个临时变量,O(n)
平均,O(1)
3、算法稳定性分析
- 判断一个排序算法的稳定性:判断两个相同元素在进行排序之后相对位置是否会发生改变。
- 范例:
题目:选择排序 | 8,7,5,9,0 | 稳定性 |
---|---|---|
第一步 | 遍历1到n的数据,找到最小值0,0的位置和第一个值的位置进行交换 | 涉及到数据交换,wsap(8,0),本次不稳定 |
第二步 | 遍历2到n的数据,找到最小值5,5的位置和第二个值的位置进行交换 | 涉及到数据交换,swap(7,5),本次不稳定 |
第三步 | 遍历3到n的数据,找到最小值7,7的位置和第三个值的位置进行交换 | 不涉及到数据交换,所以稳定 |
第四步 | 遍历4到n的数据,找到最小值8,8的位置和第四个值的位置进行交换 | 涉及到数据交换,swap(9,8),本次不稳定 |
数据交换次数 | 每次计算都可能涉及到交换 | |
稳定性分析 | 不稳定 |
- 选择排序每次计算都可能会涉及到数据的交换,所以不稳定。
4、问题最优解的指标
(1)最优先满足:时间复杂度最低
(2)其次满足:使用最小的空间算法流程
(3)一般忽略:常数项这个因素,因为这个因素只决定了实现层次的优化与考虑,而和怎么解决整个问题的思想无关。
第四章 数据结构与算法之算法基础(时间复杂度、空间复杂度、稳定性详述)相关推荐
- 计算机图形学期末复习之第四章:基本图形生成算法
可能这会是图形学期末复习最后一个整理了, 感觉其实不如直接看PPT. 1.填空20+选择20+判断10+简答20+综合30 2.没有编程题 3.复习PPT上的基本概念和算法 计算机图形学期末复习之第四 ...
- 计算机硬件技术基础第四章ppt,管理N计算机硬件技术基础第4章.ppt
资料来自网络,请保护知识产权,请您下载后勿作商用,只可学习交流使用.第4章 五.DVD驱动器 DVD光盘( Digital Video Disk) ①用于存放MPEG-2格式的数字视盘而诞生. ②DV ...
- 【PTA|Python】浙大版《Python 程序设计》题目集:第四章(适合Pythno新手的基础练习题集)
前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...
- c语言中分不分大小写,C语言高级语言程序设计(一)-第四章 程序设计方法-模块化与算法设计.ppt...
高级语言程序设计(一) (C Programming),第四讲:程序设计方法-模块化与算法设计,本章目标,进一步掌握模块化设计思想 掌握常用的数据查找及排序方法 了解全局变量 了解递归程序设计思想,问 ...
- 计算机基础第四章数据管理思维导图,计算机基础思维导图
注释:图片均为搬运,非原创,侵害到您的版权请联系删除 计算机导论 计算机操作系统 计算机网络 计算机组成原理 数据结构 一些较好的文章: 计算机考研专业课思维导图: https://zhuanlan. ...
- html5触边反弹,第四章课件.PPT_数字电子技术基础(ppt课件)_ppt_大学课件预览_高等教育资讯网...
第 4章 触发器电路 授课计划 教学内容 教学小结 一.授课计划 1.教学目标 1,熟练掌握基本 RS触发器的工作原理, 逻辑功能, 及钟控 RS触发器, JK触发器, D触发器的逻辑功能, 时间波形 ...
- 阿尔法编程python答案第四章_智慧职教Python编程基础答案第四章单元测试答案
关于装饰图案的目的说法错误的是( ) 关于表观扩散系数 ADC 的说法,以下错误的是 关于西印度院,解释有误的是(). 关于要约和承诺,依<联合国国际货物销售合同公约>的规定,下列说法中正 ...
- 《MATLAB智能算法30个案例》:第4章 基于遗传算法的TSP算法
<MATLAB智能算法30个案例>:第4章 基于遗传算法的TSP算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析>是 ...
- C语言学习总结(四)——数据结构
一.定义 数据元素和数据元素之间的关系,也可称之为数据的组织形式,包括3方面 逻辑结构: 集合 线性结构 1:1 层次结构(树形结构)1:n 图形结构(网状结构)n:n 存储结构: 顺序存储:讲数据元 ...
最新文章
- 你真的会正确使用日志吗?
- 活动目录ADSI实现添加系统帐号问题!!!
- iPhone开发之BASE64加密和解密
- 微服务框架---搭建 go-micro环境
- 什么是响应式布局设计
- ssh免密登陆机制示意图
- 三剑客之 sed详解
- asp.net 多文件上传,兼容IE6/7/8,提供完整代码下载
- Java之美[从菜鸟到高手演变]之设计模式四
- Python 画数学函数图像 matplotlib.pyplot
- 在vue中使用echarts实现飞机航线 水滴图 词云图
- 如何下载并安装mysql_超详细的MySQL下载与安装教程
- figure,figcaption的用法
- 记录一下学习嵌入式的方法和小窍门
- 将网页保存为图片--修改
- Exercise – SE Technical Boot Camp Hands-on Exercises
- JavaScript DOM编程-佟刚-专题视频课程
- Android内、外存储 易混淆点剖析(/mnt/sdcard、/storage/sdcard0、/storage/emulated/0等区别)
- Centos8(Liunx) 中安装PHP7.4 的三种方法和删除它的三种方法
- 这些阻碍程序员升职加薪的行为,你中招了几个?
热门文章
- 国家文物局:长城修复不能简单按一个统一标准进行
- Matrixport,交易、借贷和托管,如何打造数字货币界的银行?
- dmx计算机,DMX512协议是什么 DMX512数字灯光控制系统介绍
- android自动更新应用未安装
- 怎么计算机求和错误的,word求和不对 word求和结果错误
- C++ Poco库的PC编译和交叉编译
- CF 704A Thor
- 安卓学习专栏——实战项目酷欧天气(4)给天气页面加上背景图片
- 为什么宇宙会将最大速度限制在光速
- python加换行和去换行(去掉换行,end =““;加换行 ,‘/n‘)