C++ 数据结构:基本概念、时间复杂度、空间复杂度

数据结构:是指数据的存储以及存储方式,决定了数据的物理结构和逻辑结构,良好的数据结构可以提高程序的存储、查询、修改效率,降低复杂度和错误率。

算法:解决问题的步骤和方法,一个好的算法应具有高效、简洁、可维护性和正确性

时间复杂度:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随着n的变化情况来确定T(n)的数量级,算法的时间复杂度,就是算法的时间度量,记为O,T(n) = O(f(n)),我们称为大O记法。

时间复杂度往往会联系到一个函数,自变量表示规模,因变量表示执行时间(执行次数,也就是n次或n2次)

如何判断做题中的时间复杂度呢?

1,总执行次数的话,需要小于10的6次方,这个就可以了。

2,确定问题规模

3,套公式,当n<12 , 可能需要阶乘级别的算法

当n<16 , 可能需要状态压缩的算法 O(2的n次方),O(n*2的n次方),O(n的平方乘以2的n次方)

当n<30 , 可能需要O(n的四次方)的算法

当n<100 , 可能需要O(n的三次方)的算法

当n<1000, 可能需要O(n的二次方)的算法

当n<100000 , 可能需要O(n乘以log以2为底n)、O(n乘以(log以2为底n)的平方)的算法

当n<1000000 , 可能需要O(n)或O(根号n)级别的算法

空间复杂度:

常见数据结构的空间复杂度可见下

顺序表 O(n):其中n是顺序表的长度

链表 O(n):其中n是链表的长度

栈 O(n) :其中n是栈的最大深度

队列 O(n):其中n是队列的最大长度

树 O(n):其中n是树的最大深度

图 O(n+m) :其中n是图中顶点的数量, 其中m是图中边的数量

相关推荐
WIN赢19 分钟前
【二叉树的递归算法与层序遍历算法】
数据结构
Zzzzmo_1 小时前
【Java】杨辉三角、洗牌算法
java·数据结构·算法
岑梓铭2 小时前
《考研408数据结构》第四章(串和串的算法)复习笔记
数据结构·笔记·考研·算法
胖咕噜的稞达鸭4 小时前
缝合怪deque如何综合list和vector实现及仿函数模板如何优化priority_queue实现
数据结构·c++·算法·链表·list
暴力求解5 小时前
数据结构---栈和队列详解(下)
数据结构
jinmo_C++5 小时前
数据结构_哈夫曼编码(Huffman)完整指南:从原理到实现,附考研真题详解
数据结构·考研
那我掉的头发算什么5 小时前
【数据结构】优先级队列(堆)
java·开发语言·数据结构·链表·idea
如竟没有火炬6 小时前
LRU缓存——双向链表+哈希表
数据结构·python·算法·leetcode·链表·缓存
爱吃生蚝的于勒6 小时前
【Linux】零基础学会Linux之权限
linux·运维·服务器·数据结构·git·算法·github
爱编程的化学家7 小时前
代码随想录算法训练营第27天 -- 动态规划1 || 509.斐波那契数列 / 70.爬楼梯 / 746.使用最小花费爬楼梯
数据结构·c++·算法·leetcode·动态规划·代码随想录