IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 《数据结构》学习记录(2):算法分析 -> 正文阅读

[数据结构与算法]《数据结构》学习记录(2):算法分析

一、相关概念

1、算法分析

实际上就是分析算法占用的资源。

目的:分析算法的时空效率以便改进算法性能。

包括:

  • 时间性能分析:分析算法占用的CPU时间。
  • 空间性能分析:分析算法占用的内存空间。

2、原操作

指固有数据类型的操作,如+、-、*、/、++和--等。

3、时间复杂度

一个算法是由控制结构(顺序、分支和循环三种)和原操作构成的。算法执行时间取决于两者的综合效果。

4、空间复杂度

用于量度一个算法在运行过程中临时占用的存储空间大小

二、时间性能分析的方法

  • 事后分析统计方法:编写算法对应程序,统计其执行时间。但由于编写语言不同、执行程序的环境不同,所以不能用算法的绝对执行时间进行比较。
  • 事前估算分析方法:撇开编写语言、执行环境等因素,认为算法的执行时间是问题规模n(number)的函数。?

三、分析算法的执行时间的流程

  1. 求出算法所有原操作执行次数(频度)
  2. 算法执行时间大致 = 原操作所需的时间?× 执行次数。所以执行次数与算法的执行时间成正比。
  3. 比较不同算法的执行时间确定最优的算法。

例:分析如下算法的时间复杂度

#define MAX   20
void matrixadd(int n,int A[MAX][MAX],int B[MAX][MAX],int C[MAX][MAX])
{	
    int i,j;
   	for (i=0;i<n;i++)				    //①
		for (j=0;j<n;j++)			    //②
			C[i][j]=A[i][j]+B[i][j];	//③ 
}

四、算法的执行时间用时间复杂度来表示

使用 O(n) 表示。

下面是一个结论,推导过程略:

只求出算法执行时间 T(n) 的最高阶,忽略其低阶项和常系数,这样既可简化 T(n) 的计算,又能比较客观地反映出当n很大时算法的时间性能。 ?

其他概念:

  • 一个没有循环的算法的执行时间与问题规模n无关,记作 O(1),也称作常数阶。
  • 一个只有一重循环的算法的执行时间与问题规模n的增长呈线性增大关系,记作 O(n),也称线性阶。
  • 其余常用的算法时间复杂度还有平方阶 O(n^2)、立方阶 O(n^3)、对数阶 O(log^2n)、指数阶 O(2^n) 等。

各种不同算法时间复杂度的比较关系如下: ? ? ? ? ?

O(1) < O(log2n) < O(n) < O(nlog2n) < O(n2) < O(n3) < O(2n) < O(n!)

五、简化的算法时间复杂度分析

算法中的基本操作一般是最深层循环内的原操作

算法执行时间大致 = 基本操作所需的时间 × 其运算次数。?

也就是在进行简化的算法分析时,计算算法执行时间时仅仅考虑基本操作的运算次数。

例:

六、算法的空间复杂度

空间复杂度只与临时变量的个数有关。

上面例子定义了4个临时变量,与n无关,故为 O(1)

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:50:35  更:2022-03-30 18:50:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:57:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码