Android 优化 - 数据结构

一、概念

数据结构:数据存储在内存中的顺序和位置关系,选择合适的数据结构能提高内存的利用率。

线性结构
链表结构
树形结构

二、线性结构 

结构优点缺点
数组数据呈线性排列,初始化时就要指定长度且无法更改,会开辟一块连续的内存空间,元素有序可以重复且只能是同一种类型(Object类型数组除外)。查询快:由于元素是存储在一块连续的内存中,每个元素的地址值都可以通过索引算出。增删慢:由于初始化后长度固定无法更改,增删元素只能用一个新的数组去存储。
链表数据呈线性排列,初始化时无需指定长度,节点分散在内存中无须存储在连续的空间内,可以随意改变长度,由一系列节点(每个节点包括数值和指向下一个节点地址的指针)组成,节点有序可以重复。增删快:只需要修改节点指针的指向,不需要移动复制节点。查询慢:由于节点是分散在内存中的,只能从第一个元素开始顺着指针往后一个一个查起。
数据呈线性排列,只能在头部操作元素的存取,最后添加的数据最先被取出,LIFO。优先获取最新数据。获取旧数据需要先取出新数据。
队列数据呈线性排列,只能在头部存数据尾部取数据,最先添加的数据最先被取出,FIFO。优先获取最早数据。获取旧数据需要先取出新数据。
Map字典(映射)
Set集合

链表

环形链表:尾部节点使用指针指向头部节点,将链表变成环形,这样就没有了首尾的概念,适用于保存固定数量的最新数据。

双向链表:在节点使用两个指针,这样能从前往后也能从后往前遍历,但会增加存储空间,增删也会更耗时。

三、树形结构

结构优点缺点
数据成树形排列,自由添加数据但每次都取出最小值。每个节点最多只有两个分支,节点排序顺序为从上到下从左到右,子节点的值大于父节点。因此最小值存储在顶端,增加元素会被放在最后的位置(最下面一行从左往右的空位上,没有就另起一行),然后跟父节点比较,父节点更大就互换位置。取出元素后会将最后位置的元素放在顶点,然后跟子节点比较,子节点更小就互换位置。每次都取出最小值。数据越多越慢,树越高,增删后位移比较的次数越久。
二叉树数据呈树形排列,每个节点最多只有两个分支,节点排序为父节点的值大于左子树上的所有值,小于右子树上的所有值。增加元素从上往下比较,小于节点往左移,大于节点往右移。取出元素如果没有子节点就直接删掉,如果只有一个子节点就直接替代被删除节点的位置,如果有两个子节点就用左子树中最大的节点替代(即左子树一直往右的那个根节点)也能用右子树中最小的值替代(右子树最小值最接近左子树最大值且更大所以没问题)。查找和新增一样。数据多的时候查找快:二分查找法的树形结构体现。数据不均衡朝单侧纵向延伸,树变高耗时久。

二叉树

平衡二叉树可以修正形状不均匀的树提高查找效率,也可以增加子节点数。子节点数可以自由设定并且形状均衡的树叫B树。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/759339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用ansible批量修改操作系统管理员账号密码

一、ansible server端配置 1、对于Linux主机配置免密登录ssh-copy-id -i ~/.ssh/id_rsa.pub rootremote_ip 2、在/etc/ansible/hosts文件中添加相应主机IP 3、对于Windows主机需要在/etc/ansible/hosts文件中进行以下配置 192.168.83.132 ansible_ssh_useradministrator an…

神经网络(深度学习,计算机视觉,得分函数,损失函数,前向传播,反向传播,激活函数)

目录 一、神经网络简介 二、深度学习要解决的问题 三、深度学习的应用 四、计算机视觉 五、计算机视觉面临的挑战 六、得分函数 七、损失函数 八、前向传播 九、反向传播 十、神经元的个数对结果的影响 十一、正则化与激活函数 一、神经网络简介 神经网络是一种有监督…

在vue项目中封装并使用WebSocket(2)

创建一个websocket组件 <script> export default {name: "index",props: {wsUrl: {type: String,require: true,},},data() {return {socket: "",};},watch: {wsUrl: {immediate: true,handler() {this.init();},},},methods: {init() {console.log…

RocketMq 顺序消费、分区消息、延迟发送消息、Topic、tag分类 实战 (延迟发送消息) (四)

延迟发送消息生产者配置 如下所示&#xff1a;Bean注解向Spring容器注入一个名字叫delayOrderProducerBean、类型为OrderProducerBean 的对象&#xff08;下文需要用到&#xff09; Configuration public class DelayProducerClient {Autowiredprivate RocketMqDelayPropertie…

打开打包好的.APK文件,使用Android Studio

1. 没有android studio的 下载安装 Android 开发者 | Android Developers 2. 打开file下面的 “Profile or debug apk” 选择想要打开的.apk文件 3. 打开AndroidManifest.xml就可以看到想要看到版本号等基本信息

晶圆制造过程中常用载具的类型

晶圆载具用于硅片生产、晶圆制造以及工厂之间晶圆的储存、传送、运输以及防护。晶圆载具种类很多,如FOUP用于晶圆制造工厂中晶圆的传送;FOSB用于硅片生产与晶圆制造工厂之间的运输;CASSETTE载具可用于工序间运送以及配合工艺使用。 OPEN CASSETTE OPEN CASSETTE主要在晶圆…

VB.NET 中的属性(Properties)和字段(Fields)有什么区别?请举例说明。

VB.NET 中的属性&#xff08;Properties&#xff09;和字段&#xff08;Fields&#xff09;有什么区别&#xff1f;请举例说明。 在VB.NET中&#xff0c;属性&#xff08;Properties&#xff09;和字段&#xff08;Fields&#xff09;是用于封装数据的两种主要方式。它们之间的…

vue3 导航守卫

Vue 3 的导航守卫与 Vue 2 相比&#xff0c;在 API 和使用方式上并没有太大的变化&#xff0c;但 Vue 3 的响应式系统和 Composition API 为导航守卫提供了更多的灵活性。 以下是 Vue 3 中常见的几种导航守卫&#xff1a; 1. 全局前置守卫 全局前置守卫在路由跳转前执行。你可…

智慧公园:AI智能分析网关V4城市公园视频智能监管方案

一、背景分析 随着天气渐渐转暖&#xff0c;城市公园的花卉也逐渐盛开&#xff0c;春暖花开时节&#xff0c;前往公园赏花游玩的城市居民也渐渐多起来&#xff0c;因此安全问题也成为相关监管部门的重要管理任务之一。随着科技的不断进步&#xff0c;智能监控技术已经成为现代…

小程序SSL证书

小程序已成为我们日常生活中不可或缺的一部分。为了让用户的每一次点击、每一次交互都安全无忧&#xff0c;我们引入了专业级的SSL证书服务&#xff0c;为您的小程序构筑坚不可摧的信息安全壁垒。 SSL证书&#xff0c;如同一把无形的加密锁&#xff0c;它将小程序中的所有数据流…

.net 8 使用学习小记

单例模式 public class Singleton {private static Singleton instance null;private static readonly object syncRoot new object();private Singleton() { }public static Singleton Instance{get{if (instance null){lock (syncRoot){if (instance null){instance ne…

使用vue的element组件上传excel文件

在Vue.js项目中&#xff0c;如果你想要上传Excel文件&#xff0c;并且正在使用Element UI组件库&#xff0c;你可以利用 ​<el-upload>​组件来实现上传功能。以下是一个简单的例子&#xff0c;演示了如何使用Element UI上传Excel文件。 首先&#xff0c;在你的Vue组件模…

npm淘宝镜像registry.npmmirror.com设置无效的解决办法

一、问题描述 [17:08:51] npm ERR! code CERT_HAS_EXPIRED [17:08:51] npm ERR! errno CERT_HAS_EXPIRED [17:08:51] npm ERR! request to https://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz failed, reason: certificate has expired由于原来的淘宝镜像 reg…

gateway网关指定路由响应超时时间

gateway网关指定路由响应超时时间 spring:cloud:gateway:httpclient:responseTimeout: 10000这个配置用于设置HttpClient的响应超时时间&#xff0c;单位是毫秒。具体来说&#xff0c;这个配置表示当Gateway向后端服务发出请求后&#xff0c;如果在10秒内没有收到后端服务的响…

拥抱DevOps,开启数字化转型的加速器

在数字化浪潮席卷全球的今天&#xff0c;企业面临着前所未有的挑战与机遇。为了保持竞争力并适应快速变化的市场需求&#xff0c;数字化转型已成为企业发展的必由之路。而在这一过程中&#xff0c;DevOps作为一种全新的开发与运维理念&#xff0c;正逐渐成为推动企业数字化转型…

Elasticsearch7.10.2安装在EC2上面

问题 由于skywalking需要一个ES数据库&#xff0c;所以&#xff0c;这里在AWS的EC2上面安装一个ES。 安装ES7.10 ES7.11以上的版本有商业限制。所以这里安装7.11以下的版本。 # 下载rpm安装包 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-os…

【FAQ】BSV区块链代码库常见问题解答

​​发表时间&#xff1a;2024年2月27日 BSV区块链协会上线了JavaScript和TypeScript SDK&#xff08;即“标准开发工具包”&#xff09;。TypeScript SDK旨在为开发者提供新版统一核心代码库&#xff0c;让开发者可以在BSV区块链上便捷地进行开发&#xff0c;尤其是开发那些可…

ETH Gas 之 Base Fee Priority Fee

前情回顾 ETH网络 之 Gas EIP-1559 EIP-1559 EIP-1559是以太坊改进提案&#xff08;Ethereum Improvement Proposal&#xff09;&#xff0c;旨在改进以太坊的交易费用机制。该提案引入了一种新的交易费用模型&#xff0c;以提高交易费用的可预测性和网络的效率。我们本文各…

按面积筛选填充二值图中的孔洞-python源码

目录 &#x1f64b;&#x1f64b;需求 &#x1f345;&#x1f345;解决方案 &#x1f64b;&#x1f64b;需求 前提条件是二值图中0是背景&#xff0c;255是前景。 二值化后的影像中有很多小孔洞&#xff0c;现在需要按孔洞面积进行筛选&#xff0c;填充面积小于阈值的孔洞&…

web学习笔记(四十一)

目录 1.生成器Generator 2.解决回调地狱的三种方法 3. Promise对象 3.1什么是Promise对象 3.2Promise对象解决异步地狱问题 3.3Promise对象的三种状态和两个过程 3.4Promise的then方法 1.生成器Generator 生成器主要用来解决异步操作的问题。是一个异步编程的解决方案&a…