001-数据结构与算法基本概念、目录
计算机程序设计 = 数据结构 + 算法
数据结构研究变量的管理方式,算法研究解决特定问题的方法。
数据结构分三个层次:逻辑结构(抽象层)、物理结构(结构层)、运算结构(实现层)。
一、数据结构的三大结构
1.1、逻辑结构
数据之间的相互关系称为逻辑结构。逻辑结构指人对数据之间关系的理解和看法,逻辑结构和计算机无关。通常分为四类基本结构:
1、集合结构:这种结构表示数据可以合并成一个整体。
这是数据之间关系最弱的一种,就仅比那个一点关系都没有的强一点。
2、线性结构:这种结构中数据之间有一对一的关系(如排队)。
3、树型结构:这种结构中数据之间有一对多的关系,这个关系称为父子关系(典型的如细胞分裂)。
4、图状结构或网状结构:这种结构中数据之间有多对多的交叉映射关系。
1.2、物理结构
物理结构描述计算机内部数据之间实际的关系。
1、顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系。 结构中的数据元素存放在一段连续的内存空间中,典型代表就是数组。随机访问方便,插入删除复杂。
2、链式存储结构:在每一个数据元素中增加一个存放地址的指针,用此指针来表示数据元素之间的逻辑关系。这种结构中不同的数据被存储在计算机里不同的地方,他们的物理位置之间完全没有关系。链式结构由多个节点构成,每个节点中包括有效数据和至少一个指针变量。
逻辑结构可以采用多种物理结构实现,它们之间没有明确的一对一的关系。
1.3、运算结构
数据结构的基本操作(运算结构):
1、创建/销毁
分配资源、建立结构、释放资源
2、插入/删除
增加、减少数据元素
3、获取/修改
遍历、迭代、随机访问
(增删改查)
4、排序/查找
算法应用
二、数据结构与算法目录应用
物理结构 | Java抽象数据类型 | 特点 | 应用 | |
001-数据结构与算法基本概念 | ||||
002-数据结构之算法的时间复杂度和空间复杂度 | ||||
线性结构 | 003-数据结构-线性结构-数组 | 数据是连续的;随机访问速度快。 | Collection集合中提供了ArrayList和Vector | |
004-数据结构-线性结构-ADT-栈与队列【数组方式实现】 |
数组实现的栈/队列,能存储任意类型的数据。 Collection集合 中自带的栈"(stack)、队列(LinkedList) |
|||
005-数据结构-线性结构-链表、单链表、双端链表、双向链表 |
单链表:节点的链接方向是单向的;相对于数组来说, 单链表的的随机访问速度较慢,但是单链表删除/添加数据的效率很高。 |
|||
树型结构 | 006-数据结构-树形结构-二叉树、二叉查找树、平衡二叉查找树-AVL树 | |||
007-数据结构-树形结构-平衡二叉查找树-红黑树 | 来存储有序的数据,它的时间复杂度是O(lgn),效率非常之高 |
TreeSet、TreeMap、JDK1.8 HashMap linux进程调度 |
||
008-数据结构-树形结构-二叉查找树-伸展树 | ||||
009-数据结构-树形结构-哈夫曼树[霍夫曼树] | 哈夫曼编码 | |||
010-数据结构-树形结构-B树[B-树] | 用于关系型数据库的索引(MySQL) | |||
011-数据结构-树形结构-B+树、B*树 | B+树用于关系型数据库的索引(MySQL) | |||
012-数据结构-树形结构-哈希树[hashtree]、字典树[trietree]、后缀树 | ||||
013-数据结构-树形结构-决策树 | ||||
015-数据结构-树形结构-其他树 |
发送到