数据结构第一课:复杂度解析

1.数据结构

数据结构 = 数据的存储方式 + 数据之间的逻辑关系。是计算机存储、组织数据的方式,指相互之间存在一种或者多种特定关系的数据元素的集合。

2.算法

算法是解决特定问题的一系列有限、确定、可行的操作步骤。 数据结构和算法是不分家的

ex:

这里超出时间限制其实就是指不满足复杂度的要求。那么这里便引出了另一个概念--复杂度

3.复杂度

算法在编写成可执行程序后,需要耗费时间资源和空间(内存)资源。因此衡量一个算法的好坏,一般是从时间空间两个维度来衡量的

时间复杂度 主要衡量⼀个算法的运⾏快慢,⽽空间复杂度主要衡量⼀个算法运⾏所需要的额外空间。

3.1时间复杂度

定义:算法的时间复杂度是一个函数式T(N),而不是一个具体的数字。时间复杂度是衡量程序的时间效率

程序执行的时间 = 二进制指令运行时间*执行次数

计算程序能代表增长量级的大概执行次数,复杂度的表示通常使用大O的渐进表示法。

3.1.1大O的渐进表示法

1.常数用 1 代替:所有常数项,不管多大都是 O(1)

2.只保留最高次项,低次项全部删掉

3.去掉最高次项前面的系数

tip:

1.有些算法的时间复杂度存在最好、平均和最坏情况,大O的渐进表示法在实际中一般情况关注的是算法的上界,也就是最坏运行情况。

2.书籍中的log n、lg n的表示,当n接近无穷大时,底数的大小对结果影响不大。因此,一般情况下不管底数是多少都可以省略不写,即可以表示为log n

不同书籍的表示方式不同,以上写法差别不大,我们建议使用log n

3.递归算法的时间复杂度 = 单次递归的时间复杂度 * 递归次数

3.2 空间复杂度

空间复杂度也是一个数学表达式,是对一个算法在运行过程中因为算法的需要额外临时开辟的空间。

空间复杂度算的是变量的个数,也使用大O渐进表示法。

tip:

函数运行时所需要的栈空间(存储参数、局部变量、一些寄存器信息等)在编译期间已经确定好了,因此空间复杂度主要通过函数在运行时显示申请的额外空间来确定。

练习:

189. 轮转数组 - 力扣(LeetCode)

相关推荐
All for pursuit.5 小时前
【矩阵-2】240.搜索二维矩阵 II
数据结构·c++·算法·leetcode
Logic10114 小时前
C语言/数据结构位运算题解:异或XOR找出蛋糕订单中的“VIP独特口味“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
Logic10115 小时前
C语言/数据结构位运算题解:异或XOR找出飞行棋中的“独特颜色棋子“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
爱吃苹果的日记本15 小时前
数据结构第三课(时间复杂度)
数据结构·学习
Logic10117 小时前
C语言/数据动态规划题解:翻转一次子数组后的最大子数组和——四状态DP(O(n)时间O(1)空间)
c语言·数据结构·动态规划·时间复杂度·算法题·状态机dp·最大子数组和
小π军18 小时前
最大重叠区间数量
数据结构·算法
Logic10119 小时前
C语言/数据结构字符串题解:找出DNA序列中未配对的独特序列——排序+遍历(O(nlogn))
c语言·数据结构·字符串·数组·排序·时间复杂度·算法题
wzdark20 小时前
基于链表的内存池设计与内存复用机制4
java·数据结构·链表
BizzZ_1 天前
算法(1)——双指针
数据结构
Doubbbbbbble云1 天前
内存碎片化对数据结构操作性能的影响研究4
数据结构