数据结构与算法--基础入门概念
一: 数据结构
1:数据的层次划分
1:数据类型
一个类(相当于Java中的class)
2:数据元素
数据元素属于一种数据类型
3:数据对象
数据类型的实例对象
4:数据项
数据类型的属性,数据类型的实例对象的属性,也是一种数据元素
5:借图辅助理解
2:基于数据的数据结构
1: 物理层的存储结构
- 对于计算机,只能识别,存储,计算二进制的"数据";应用层数据数据和程序指令,对其来说没有区别;
- 物理层面来说,大致上有 顺序存储 和 链式存储 两种;与之对应的是"数组","链表"概念;当然,数组需要连续的空间,但是访问性能高,空间利用率低;链表可以使用零碎的内存空间,空间利用率高,访问性能总体不如数组;
2:应用层的逻辑关系结构
数据结构的应用层的逻辑关系结构,从应用层来说 ,基本都是基于"数组"和"链表"两种基本类型数据结构而衍生的;但是存在一种逻辑上的"集合结构"较为特殊,可参考后续详解;
如:
线性结构
可以当成"数组"理解
树形结构
可以当成"链表"理解
图形结构
可以当成复杂的"链表"理解
集合结构(相对特殊)
集合结构可以理解成数据元素中的***数据子元素***之间没有显示的逻辑关系,一般相互访问时,需要通过父级层面去访问;
如何评价一个数据结构的优劣?
数据结构的优劣的评价必须配合算法一起应用,才能说其优与劣;
二:算法
算法是依赖数据结构的,以及其实际中的特性,才能最大程度利用各种资源,达到最好的效果;
算法的两大指标
实际情况是,根据具体的场景,需要组合使用两大指标,而采取某种策略;是时间换空间还是空间换时间等;
时间复杂度,随着数据量的增加,所耗费的时间;
- 线型(不好)
- 指数型(最差)
- 对数型(较好)
空间复杂度,随着数据量的增加,所消耗的空间;
- 线型(不好)
- 指数型(最差)
- 对数型(较好)
三:常见的基础的算法与数据结构
复杂的算法和数据结构,通常都是由基本的数据结构和算法组成;
排序(算法)
冒泡,快排,希尔排序,堆排等;
数组(数据结构)
链表(数据结构)
单链表,双向链表
树与二叉树(数据结构)
树的默认规则: 父级"值"大于子级"值’,右节点"值"大于左节点"值";
AVL树,红黑树等,都是在树 的基础上对其结构做进一步的限制;在插入/删除 与 查询 性能之间做不同程度的平衡;
队列(数据结构)
先进后出
栈(数据结构)
先进先出