目录
一、数据结构概述
1.数据结构分为:数据的逻辑结构、数据的物理结构
🧠 ⑴.逻辑结构:数据关系的抽象模型
①. 集合结构
②. 线性结构
③. 树形结构
④. 图状结构
💾 ⑵.物理结构:数据存储的实体实现
①. 顺序存储
②. 链式存储
③. 散列存储
🔍2.逻辑 vs 物理:设计思维的双重视角
🛠️3.如何选择数据结构?三大黄金法则
🌟 4.真实世界的数据结构
二、算法概述
🧩 1.什么是算法?
📊 2.如何评价算法好坏?——效率是关键
🔢 3.经典案例:计算1+2+3+...+100
算法1:暴力循环法(时间换空间)
算法2:递归法(空间换时间)
算法3:高斯公式(最优解)
⏱️ 4.时间复杂度:程序的时间成本
💾5. 空间复杂度:程序的内存账单
⚖️ 6.时间与空间的权衡艺术
🚀7. 算法优化实战思路
🌐8. 真实世界中的算法应用
🔍 9.如何学习算法?
三、时间复杂度
1.什么叫做时间复杂度?
🌰 用汽车油耗做类比
📝 分步理解数学定义
📊 T(n) 与 O(n) 的关系
❓ 常见疑问解答
Q1:为什么要用极限?
Q2:系数为什么不重要?
Q3:为什么关注最坏情况?
📈 时间复杂度速查表
2.时间复杂度计算步骤
⑴. 计算基本操作的执行次数T(n)
⑵. 通过T(n)得到f(n)
⑶. 用大O表示时间复杂度
3.常见时间复杂度详细分析
⑴. 常数阶 O(1)
2. 对数阶 O(log n)
编辑
3. 线性阶 O(n)
4. 线性对数阶 O(n log n)
5. 平方阶O(n²)
编辑
6. 立方阶 O()
编辑
7. 指数阶 O()
8. 阶乘阶 O(n!)
4.常见时间复杂度耗时比较
一、数据结构概述
📦 引言:为什么需要数据结构?
想象一下你的房间:如果衣服乱堆、书籍散落、工具混杂,想找到需要的东西如同大海捞针。同样的道理,程序中的数据如果无序存储,会导致执行效率低下甚至逻辑混乱。数据结构就像程序员设计的收纳系统,它决定了数据如何组织、存储和访问,是构建高效程序的基石。
1.数据结构分为:数据的逻辑结构、数据的物理结构
1.逻辑结构是指数据元素之间的逻辑关系,它是从抽象的角度描述数据元素之间的关系,不涉及具体的存储方式或实现细节。逻辑结构主要关注问题的本质、特点和抽象模型,是数据结构的逻辑表示。
2.物理结构是指数据结构在计算机内存中实际存储和组织的方式。它是从具体的角度描述数据结构的实现方式和存储结构,包括数据元素在内存中的存储分布和访问方式等。物理结构主要关注问题的具体实现和操作。
3.因此,逻辑结构与物理结构的区别在于:逻辑结构是从抽象的角度描述数据元素之间的关系,物理结构是从具体的角度描述内存中数据元素的存储方式和组织形式。
逻辑结构主要关注问题的本质和特点,物理结构主要关注问题的具体实现和操作。
决定了数据如何组织、存储和访问,是构建高效程序的基石。
🧠 ⑴.逻辑结构:数据关系的抽象模型
逻辑结构关注数据元素之间的本质关系,如同设计收纳方案时思考"物品之间如何关联",不涉及具体如何摆放。
①. 集合结构
-
特点:元素仅属于同一个集合,彼此独立
-
比喻:一筐散装鸡蛋,每个鸡蛋之间没有直接联系
-
应用场景:哈希表的键集合
②. 线性结构
-
特点:元素呈一对一顺序关系
-
比喻:糖葫芦串(竹签串联山楂)
-
典型结构:数组、链表、栈、队列
-
应用场景:浏览器访问历史(栈)、消息队列(队列)
③. 树形结构
-
特点:元素呈一对多层次关系
-
比喻:公司组织架构(CEO→部门经理→员工)
-
典型结构:二叉树、B树、DOM树
-
应用场景:文件系统目录、数据库索引
④. 图状结构
-
特点:元素呈多对多复杂关系
-
比喻:城市交通网(道路连接多个地点)
-
典型结构:有向图、无向图
-
应用场景:社交网络关系、地图路径规划
💾 ⑵.物理结构:数据存储的实体实现
①. 顺序存储
-
原理:连续内存空间存储元素
-
特点:
-
✅ 访问速度快(通过下标直接计算地址)
-
❌ 插入/删除效率低(需要移动元素)
-
-
典型代表:数组
-
内存示意图:
②. 链式存储
-
原理:通过指针关联离散存储的元素
-
特点:
-
✅ 插入/删除高效(只需修改指针)
-
❌ 访问需要遍历(无法随机访问)
-
-
典型代表:链表
-
内存示意图:
③. 散列存储
-
原理:通过哈希函数计算存储位置
-
特点:
-
✅ 查询速度极快(理想情况下O(1))
-
❌ 哈希冲突需要处理
-
-
典型代表:HashMap
-
存储过程:
🔍2.逻辑 vs 物理:设计思维的双重视角
维度 | 逻辑结构 | 物理结构 |
---|---|---|
关注点 | 数据之间的抽象关系 | 数据在内存中的实际存储方式 |
设计阶段 | 需求分析阶段(解决"做什么") | 实现阶段(解决"怎么做") |
修改成本 | 高(影响整体设计) | 相对较低(局部实现调整) |
示例对比 | 树形结构(组织架构) | 数组存储 vs 链式存储 |
🛠️3.如何选择数据结构?三大黄金法则
看操作需求:
频繁查询 → 散列存储
频繁增删 → 链式存储
需要排序 → 树形结构
看数据规模:
小数据量 → 简单结构(如数组)
大数据量 → 高效结构(如B+树)
看业务场景:
层级关系 → 树结构
网络关系 → 图结构
先进先出 → 队列
🌟 4.真实世界的数据结构
-
数据库索引:B+树(平衡多路搜索树)
-
浏览器缓存:LRU Cache(哈希表+双向链表)
-
版本控制系统:有向无环图(Git提交历史)
-
路由算法:图的最短路径(Dijkstra算法)
二、算法概述
🧩 1.什么是算法?
算法是解决问题的明确步骤集合,可以让计算机完成特定任务,并提高计算机系统的效率和性能。如同菜谱指导厨师如何烹饪一道菜:
输入:食材(如牛排、调料)
处理步骤:煎制时间、火候控制
输出:成品(如香煎牛排)
在计算机中,算法是让数据从“原始状态”变成“目标结果”的加工流程。例如:
-
排序算法:将乱序数字变为有序序列
-
搜索算法:在数据海洋中快速找到目标
📊 2.如何评价算法好坏?——效率是关键
评价算法如同选择出行方式:
自行车(低效算法):省钱但耗时
出租车(高效算法)&