一、数据结构:
数据是软件开发的核心。在软件开发过程中基本上就是对数据的新增、删除、修改、查看的操作。
如何合理存储数据,如何有效提升数据操作开发效率,都是软件开发中的重中之重。使用合理的数据结构是非常重要的。
1.1简介:
数据结构(Data Structure):计算机存储数据、操作数据的方式。将这些数据按照特定结构组成一个集合。
数据结构是一种宏观概念,其中包含很多具体的数据结构。
例如:数组、链表、堆、栈、队列、树、图、散列表等,每一种数据结构都有自己的优缺点。
1.2分类介绍:
数据结构可以按照存储结构分类,也可以按照逻辑进行分类;
1.2.1存储分类:
顺序存储结构:
数据存储到一块连续的空间。例如:数组,List集合(底层数组)
优点:地址连续,遍历效率高;可以随机访问
缺点:插入或删除的效率低(需要移动数组,如果数据量大效率很低)
链式存储结构:
数据存储到非连续的空间中。每个数据存储者后面数据的地址,形成链式结构。
优点:插入或删除效率高。只需要修改存储的地址。
缺点:地址非连续,遍历效率低。丧失随机访问数据能力。
索引存储结构:
除存储的数据之外,还存储索引表存储数据的索引信息。MySQL数据库、MongoDB数据库等存储工具都支持索引。
散列表(Hash)存储结构:
散列表存储结构是对数据进行计算,直接得到数据存储时的内存地址。使用顺序结构和链式结构共同实现(数组+链表)。
1.2.2 逻辑分类
逻辑分类是程序员认为的结构,在计算机中还是按照存储结构分类进行存储的;
逻辑分类按照前一个数据 和 后一个数据数量对应关系进行的分类。
线性结构(一对一)
数据与数据之间是线性结构。除首尾不相连其他都是由顺序的。而且是一对一关系。
线性结构有:数组、链表、堆、栈、队列等都是线性结构
树形结构(一对多)
数据之间由层次关系。数据是一对多展示的,一个数据后面可以由多个数据,但每个数据前只能有一个数据。
树形结构有:普通树、二叉树、二叉搜索树、平衡二叉搜索树、红黑树、B树、B+树等
图形结构(多对多)
数据之间是网状关系结构。数据之间是多对多的关系,也就是说一个数据后面有多个数据,这个数据前面也有多个数据。