系列文章目录
文章目录
- 系列文章目录
- 前言
- 一、逻辑结构
- 二、物理结构
- 1.连续的存储空间:数组
- 2.非连续的存储空间:链式
- 总结
前言
1、逻辑结构是针对程序员的角度来说的
2、物理结构是针对程序员如何实现这个逻辑结构的角度来说的
一、逻辑结构
1、数据的存储:
(1)变量
简单类型的变量:
int a = 10;
String str = “hello”;
复杂类型的变量:
int[] arr = {1,2,3,4};
(2)数组
存储一组数据,这组数据可以是基本数据类型,也可以是对象。
int[] arr = {1,2,3,4};
Student[] arr = new Student[3];
arr[0] = new Student(“张三”,23);
数组的特点(也可以理解为缺点,但是也不一定是缺点):
①长度是固定的
②(无法确定数据的有效个数)需要额外的变量来记录数组的有效元的个数,例如:total
对于程序员来说:
如果要扩容等,或者要维护元素的个数,都需要大量的工作。所以对它需要有需补充,这就产生了集合
(3)其他容器:集合
每一种集合都有自己的特点,适用于特定的类型
二、物理结构
1.连续的存储空间:数组
数据存储的物理结构
元素是相邻的,在内存中需要开辟的连续的存储空间
缺点:内存比较吃紧时,找一整块空间不好找
优点:访问速度比较快,因为有了首地址,然后根据下标,直接就可以找到对应的元素
2.非连续的存储空间:链式
元素不一定是相邻的,在内存中不需要开辟的连续的存储空间
缺点:访问速度相对数组比较慢,要从头,挨个遍历
优点:不要求空间连续,可以插空
链式中:
线性:链表
非线性:树
分为线性和非线性:
线性:数组、链表、队列(数组或链表)、栈(数组或链表)
非线性:树(二叉树等)、图…
数据结构:
数组、单向链表、双向链表、二叉树、队列、栈、图…
数据的存储结构会影响程序的性能。
数据结构也是算法的基础。
这样就引人了双向链表
如果我们还想提高效率,那应该怎么办
二叉树
总结
1、数据的存储结构会影响程序的性能。
2、数据结构也是算法的基础。