-- 数据结构 顺序表 --Java

ops/2024/9/25 17:16:33/

顺序表:使用一段物理地址连续的储存单元依此储存元素,一般使用数组实现顺序表的增删查改

实现

顺序表其实就是将元素储存到一个数组中,并且这个数组会根据你的插入的数据的增加而自动进行数组的扩容

字段的设计

使用了多态是为了能储存各种类型的数据,继承的接口是把要写的方法卸载接口中然后再类中实现这样方便管理

default是默认的数组的大小,size是储存的元素数量,capacity是储存元素的数组

增 add

直接将要添加的元素加入size指向的位置就好,应为size指向的正好是第一个没有储存数据的空位置,插入后size++记录下插入的元素个数,在插入时可能会存在数组储存满

(size == capacity.length)了的情况,那么这时我们就需要对数组进行扩容,对于扩容具体要扩多大,这里使用的是1.5倍

删除 remove

要删除首先要找到要删除的这个元素,然后将这个元素后面的元素向前移动一步,覆盖掉要删除的这个元素,这时我的删除就写好了

为了找到这个元素,我们只需要遍历有效数据数量而不是整个数组

查 get

遍历整个有效数据,若存在就返回true,若不存在返回false

改 set

更改指定下表的值,要注意下表的合法性

这里如果不合法会抛出自定义的异常

增删查改over

接下来还可以写出自己需要的各种方法 指定位置的插入 清空顺序表等等

顺序表可以实现数据的随机查询,因为数据是连续的,只需要输入对应的下标就可以查询

对于顺序表的最大弊端就是会造成空间的浪费,比如他扩容了100个整形的位置但是可能在我存储到50个就没有数据的存储了,那么就造成50个空间的浪费,若要避免空间的浪费,那么就可以使用另一种数据结构链表

end 


http://www.ppmy.cn/ops/102372.html

相关文章

损失函数与反向传播

1.损失函数的作用 计算实际输出和目标之间的差距为我们更新输出提供一定的依据(反向传播) 2.介绍几种官方文档中的损失函数 损失函数只能处理float类型的张量。 L1Loss (MAE):  import torch from torch.nn import L1Lossi…

Launcher start App WINDOWING_MODE_FREEFORM

WINDOWING_MODE_FREEFORM start App 核心思路: 这个windowmode需要从FullScreen —> Freeform, 需要在startActivity时候携带相关相关参数,把windowmode和launchBounds进行设置。 Android T b/frameworks/base/core/java/android/app/Instrumentat…

AI模型:追求全能还是专精?

全能型AI与专精型AI:未来的机遇与挑战 随着人工智能技术的飞速发展,AI的应用范围愈加广泛和深入。近日,OpenAI 宣布将在秋季推出代号为“草莓”的新AI,从专注于数学问题到能处理主观营销策略,这款AI展现了惊人的多样性…

区块链媒体套餐发稿:世媒讯引领项目推广新风潮

在区块链技术迅猛发展的今天,越来越多的企业和项目涌现出来,希望通过区块链技术改变传统行业,并在全球范围内获得更多关注和支持。然而,在这个竞争激烈的市场中,如何快速有效地推广和传播项目变得尤为重要。选择合适的…

golang笔记——Go堆内存管理

前言 本文主要记录个人学习Golang堆内存管理,涉及到的相关内容,算是对个人所学知识点的梳理与总结。从非常宏观的角度看,Go的堆内存管理就是下图这个样子 学习内存管理,肯定首先需要了解内存管理的基本知识,我会按照 内…

GPT-4、Claude 3 Opus 和 Gemini 1.0 Ultra 挑战控制工程的新领域

介绍 论文地址:https://arxiv.org/abs/2404.03647 近年来,GPT-4、Claude 3 Opus 和 Gemini 1.0 Ultra 等大规模语言模型(LLM)迅速发展,展示了它们解决复杂问题的能力。LLM 的这些发展在多个领域都有潜在的应用前景。…

买电脑如何选择显卡?

买电脑时选择显卡,可以遵循以下几个关键点来做出决策: 明确使用需求: 日常办公、上网浏览等轻度应用:集成显卡或入门级独立显卡即可满足需求。 游戏玩家:需要选择性能较强的中高端显卡,如NVIDIA的RTX系列…

[E链表] lc141. 环形链表(快慢指针+基础题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:141. 环形链表 题单: 链表、二叉树与一般树(前后指针/快慢指针/DFS/BFS/直径/LCA) 1.6 快慢指针 2. 题目解析 思路: 用相对速度思考快慢指针的问题会简化很多…