系列文章目录

文章目录

  • ​​系列文章目录​​
  • ​​前言​​
  • ​​一、逻辑结构​​
  • ​​二、物理结构​​
  • ​​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.非连续的存储空间:链式

元素不一定是相邻的,在内存中不需要开辟的连续的存储空间
缺点:访问速度相对数组比较慢,要从头,挨个遍历
优点:不要求空间连续,可以插空

链式中:
线性:链表
非线性:树

分为线性和非线性:
线性:数组、链表、队列(数组或链表)、栈(数组或链表)
非线性:树(二叉树等)、图…

数据结构:
数组、单向链表、双向链表、二叉树、队列、栈、图…

数据的存储结构会影响程序的性能。
数据结构也是算法的基础。

00019.01 数据结构:物理结构与逻辑结构(-----)_数组


00019.01 数据结构:物理结构与逻辑结构(-----)_存储空间_02


这样就引人了双向链表

00019.01 数据结构:物理结构与逻辑结构(-----)_数据_03


如果我们还想提高效率,那应该怎么办

二叉树

00019.01 数据结构:物理结构与逻辑结构(-----)_数组_04

总结

1、数据的存储结构会影响程序的性能。
2、数据结构也是算法的基础。