文章目录
- 基本概念
- 数据存储方式
- 算法
- 案例
基本概念
程序 = 数据结构 + 算法
数据结构,数据的存储(物理结构)及相互间的关联关系(逻辑结构);
- 线性表(顺序表、链表、队列、栈),一个前驱,一个后继
- 树(二叉树、B树、B+树、红黑树),一个前驱,多个后继
- 图,多个前驱,多个后继
算法, 处理问题的逻辑方式
数据存储方式
数据在内存中有如下两种存储方式:
-
顺序存储,内存块地址连续,通过相对位置(offset)表示数据间的逻辑关系
通过索引(偏移量)随机存取;
插入、删除依次移动多个元素;最坏复杂度O(n)
如python中的列表 -
链式存储,内存块地址不连续,通过指针表示数据间的逻辑关系
结点包含后继结点的地址信息,空间利用率低;
必须顺序存取, 不可以随机存取;
插入、删除方便,时间复杂度O(1)
求解问题:面向问题,抽象出合适的逻辑结构;面向机器,选择合适的存储结构。
算法
算法,是解决某一问题的方法步骤。可以是自然语言或者计算机语言。
算法特性:
- 有穷性,操作步骤有限、合理;
- 确定性,每一步必须有确定的含义;
- 可行性,
案例
-
100W个词语,设计最快查询速度的存储方式
哈希结构, 二进制转为十进制,对应的数值作为索引存入数组 -
n个城市的连线,最小费用问题
图结构,