算法复杂度概述

文章目录


你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~


🍊自我介绍

Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名**"创始团队·嘉宾"** 和**"内容共创官"** ,现在我来为大家介绍一下有关物联网-嵌入式方面的内容。


🍊算法分析

简介

一个好的算法首先要具备正确性,然后是健壮性,可读性,在几个方面都满足的情况下,注意考虑算法的效率,通过算法的效率高低来评判不同的优劣程度。

算法效率衡量的标准

1.时间效率:指的是算法所消耗的时间;

2.空间效率:指的是算法执行过程中所消耗的存储控件。

注意:时间效率和空间效率有时候是矛盾的。

公式

算法运行时间 = 每条语句执行的次数 * 该语句一次执行的时间。
频度:每条语句执行的次数。

由于我们每条语句执行一次所需要的时间,是随着机器而异的,取决于机器的性能、速度及执行代码指令等。它是由机器本身的配置决定的。与算法无关。

所以,我们假设每条语句所需的时间均为单位时间。那么对算法的运行时间的讨论就可以转换为讨论该算法所有语句的执行次数,即频度之和了。

算法频度分析

例如:两个n * n矩阵相乘的算法计算频度。

c 复制代码
for(i = 1; i <= n;i++)  //执行n + 1次
{
	for(j = 1;j <= n ;j++)  //执行n(n + 1)次
	{	
		c[i][j] = 0;  //执行n * n次
		for(k = 0;k < n;k++)  //执行n * n *(n+1)次
		{
			c[i][j] = c[i][j] + a[i][k] *b[k][j];  //执行n * n * n次
		}
	}
}

我们把该算法所耗费的时间定义为该算法中每条语句的频度之和T(n)。

T(n) = 2 n 3 {2n}^{3} 2n3+ 3 n 2 {3n}^{2} 3n2+2n+1

🍊时间复杂度

为了便于比较不同算法的时间效率。我们仅仅比较它的数量级。若有某个辅助函数f(n),使得当n趋于无穷大的时候,T(n)/f(n)的极限值为不等于零的常数,则则称f(n)是T(n)的同数量级函数。

c 复制代码
 T(n) = ${2n}^{3}$+${3n}^{2}$+2n+1 

当n->∞,T(n)/ n 3 {n}^{3} n3 -->2 ,当n足够大的时候,T(n)与 n 3 {n}^{3} n3互为同阶数量级。引入大' O '符号。

c 复制代码
T(n) = O(n^3)

简单计算方法:计算机核心代码的时间频度,推出其使劲按复杂度。

T(n) = n 3 {n}^{3} n3 ----> O( n 3 {n}^{3} n3)

核心代码指的就是程序中间运算次数最多的那个代码。

上面给的示例是程序中的核心语句就是:

c 复制代码
c[i][j] = c[i][j] + a[i][k] *b[k][j];  //执行n * n * n次

🍊实战演练

1.找出语句频度最大的那条语句作为基本语句(找核心语句)

2.计算基本语句的频度T(n)

3.取数量级用符号"O"表示

c 复制代码
x = 0,y = 0;

for(int k = 0;k < n;k++)
	x++;

for(int i = 0;i < n;i++)
{
	for(int j = 0;j < n;j++)
		y++;  //基本语句:执行 n*n次
}

时间复杂度:O(n) = n 2 {n}^{2} n2

算法量级

相关推荐
疋瓞26 分钟前
C++_STL和数据结构《1》_STL、STL_迭代器、c++中的模版、STL_vecto、列表初始化、三个算法、链表
数据结构·c++·算法
JJJJ_iii28 分钟前
【左程云算法09】栈的入门题目-最小栈
java·开发语言·数据结构·算法·时间复杂度
Bear on Toilet1 小时前
继承类模板:函数未在模板定义上下文中声明,只能通过实例化上下文中参数相关的查找找到
开发语言·javascript·c++·算法·继承
金融小师妹1 小时前
多因子AI回归揭示通胀-就业背离,黄金价格稳态区间的时序建模
大数据·人工智能·算法
程序员东岸1 小时前
C语言入门指南:字符函数和字符串函数
c语言·笔记·学习·程序人生·算法
小猪咪piggy1 小时前
【算法】day2 双指针+滑动窗口
数据结构·算法·leetcode
max5006002 小时前
OpenSTL PredRNNv2 模型复现与自定义数据集训练
开发语言·人工智能·python·深度学习·算法
budingxiaomoli2 小时前
AVL树知识总结
数据结构·算法
jz-炸芯片的zero2 小时前
【Zephyr电源与功耗专题】14_BMS电池管理算法(三重验证机制实现高精度电量估算)
单片机·物联网·算法·zephyr·bms电源管理算法
u0104058364 小时前
京东返利app的分布式ID生成策略:雪花算法在订单系统中的实践
分布式·算法