本文主要介绍数据结构中的一些基本知识,例如数据结构得划分、数据类型、算法等。 接下来的博客将详细介绍数据结构中的链表、栈和队列、树、查找、排序等算法。
数据结构
逻辑结构(算法设计)
- 线性结构:线性表、栈、队列(一对一)
- 非线性结构:树、图、集合(一对多、多对多)
存储结构(算法实现) 物理结构
- 数据的运算
数据元素是数据的基本单位。
数据类型
- 原子类型: (值不可再分)
- 结构类型: (值可在分)
- 抽象数据类型: (数据对象、数据关系、基本操作等)
线性结构
- 一般线性表
- 受限线性表 (栈、队列、串)
- 线性表推广 (数组、广义表)
有序表仅描述元素间的逻辑关系,属于逻辑结构。
二叉树和二叉排序树逻辑结构和存储结构相同,但数据运算不同。
算法
特性:
- 有穷性
- 确定性
- 可行性
- 输入(随便)
- 输出(至少一个)
效率:
- 时间复杂度:一般考虑最坏时间复杂度
- 空间复杂度:原地工作指算法所需的辅助空间为常量,O(1)
大小关系:
$O(1)<O(log_{2}^{n})<O(n)<O(nlog_{2}^{n})<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)$
整体内容如下: