Java进阶:【集合】认识集合相关的数据结构

本文深入浅出地阐述算法,介绍其解决问题的流程、高斯算法示例,并讨论时间复杂度与空间复杂度。同时,剖析数据结构,如线性表的逻辑与物理结构,以及紧密与跳转结构的区别,以数组和链表为例详细讲解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是算法和数据结构

算法:

  1. 可以解决具体问题。例如:1+2+3+4+5.。。+99+100

    流程=算法

  2. 有设计解决的具体的流程

    算法1:(1+100)*50=101 *50–>高斯算法

  3. 有评价这个算法的具体指标

    有评价这个算法的具体的指标–>时间复杂度,空间复杂度(从数学角度考虑)


数据结构:如何组织管理数据的结构,按照某种规则结构来组织管理我们的数据

数据结构分为:

  1. 逻辑结构:–>思想上的结构–>卧室,厨房,卫生间–>线性表(数组,链表),图,树,栈,队列
  2. 物理结构:–>真实结构–>钢筋混凝土+牛顿力学–>紧密结构(顺序结构),跳转结构(链式结构)

以线性表为例:

线性表逻辑结构表述图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-brRV56oz-1637913992807)(javaSE.assets/image-20210702095047972.png)]

线性表的特点:

线性表是n个数据类型相同的数据元素的有限序列,通常记作:a,ai-1,ai,ai+1

1.相同的数据类型

线性表中可以有n个相同属性的元素,比如可以都是数字,可以都是字符,相同类型意味着每一个元素占用相同的内存空间。

2序列(顺序性)

ai-1,ai,ai+1为例子,ai的前一位是ai-1,ai的后一位是ai+1,一般ai0为表头,除了表头和表尾元素外,任何一个元素有且仅有一个直接前驱和一个直接后继

3有限

线性表中的数据元素定义为n,n是个有限值,当n=0的时候就是线性表为空,在非空的线性表中每个数据元素都有唯一确定的序号,下标

逻辑结构和物理结构的关系

线性表逻辑,对应真实的如果是紧密结构,典型:数组;

线性表逻辑结构,对应的真实结构如果是跳转结构,典型为链表

什么是紧密结构?

在存储数据的时候选择相邻的位置存储,

以int数组为例,int 4位,下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WhtuCnag-1637913992810)(javaSE.assets/image-20210702100320434.png)]

优点:

寻址快–>查找元素快

缺点:

删除和增加元素效率低

什么是跳转结构?

以链表为例

单向链表:

每一个元素的位置除了存放自己的数据还要存放寻找下一个元素的地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZFYvAvXI-1637913992812)(javaSE.assets/image-20210702100502323.png)]

双向链表:

每个元素除了存放自己的数据,还存放了上一个元素的地址和下一个元素的地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xMJVIJzL-1637913992813)(javaSE.assets/image-20210702100633064.png)]

循环链表:

就是首元素和尾元素互相指向,首尾相连

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PyrtNvy2-1637913992814)(javaSE.assets/image-20210702100707054.png)]

跳转结构:

优点:删除元素,插入元素效率高,

缺点:查询元素效率地。为什么?

应为我如果像查找一个元素我要从上一个寻找,如果多的话,十分麻烦,数组寻址找是直接寻找,效率十分之快

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷环渊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值