Android 优化 - 数据结构
一、概念
数据结构:数据存储在内存中的顺序和位置关系,选择合适的数据结构能提高内存的利用率。
| 线性结构 | |
| 链表结构 | |
| 树形结构 |
二、线性结构
| 结构 | 优点 | 缺点 | |
| 数组 | 数据呈线性排列,初始化时就要指定长度且无法更改,会开辟一块连续的内存空间,元素有序可以重复且只能是同一种类型(Object类型数组除外)。 | 查询快:由于元素是存储在一块连续的内存中,每个元素的地址值都可以通过索引算出。 | 增删慢:由于初始化后长度固定无法更改,增删元素只能用一个新的数组去存储。 |
| 链表 | 数据呈线性排列,初始化时无需指定长度,节点分散在内存中无须存储在连续的空间内,可以随意改变长度,由一系列节点(每个节点包括数值和指向下一个节点地址的指针)组成,节点有序可以重复。 | 增删快:只需要修改节点指针的指向,不需要移动复制节点。 | 查询慢:由于节点是分散在内存中的,只能从第一个元素开始顺着指针往后一个一个查起。 |
| 栈 | 数据呈线性排列,只能在头部操作元素的存取,最后添加的数据最先被取出,LIFO。 | 优先获取最新数据。 | 获取旧数据需要先取出新数据。 |
| 队列 | 数据呈线性排列,只能在头部存数据尾部取数据,最先添加的数据最先被取出,FIFO。 | 优先获取最早数据。 | 获取旧数据需要先取出新数据。 |
| Map字典(映射) | |||
| Set集合 |
链表
环形链表:尾部节点使用指针指向头部节点,将链表变成环形,这样就没有了首尾的概念,适用于保存固定数量的最新数据。
双向链表:在节点使用两个指针,这样能从前往后也能从后往前遍历,但会增加存储空间,增删也会更耗时。
三、树形结构
| 结构 | 优点 | 缺点 | |
| 堆 | 数据成树形排列,自由添加数据但每次都取出最小值。每个节点最多只有两个分支,节点排序顺序为从上到下从左到右,子节点的值大于父节点。因此最小值存储在顶端,增加元素会被放在最后的位置(最下面一行从左往右的空位上,没有就另起一行),然后跟父节点比较,父节点更大就互换位置。取出元素后会将最后位置的元素放在顶点,然后跟子节点比较,子节点更小就互换位置。 | 每次都取出最小值。 | 数据越多越慢,树越高,增删后位移比较的次数越久。 |
| 二叉树 | 数据呈树形排列,每个节点最多只有两个分支,节点排序为父节点的值大于左子树上的所有值,小于右子树上的所有值。增加元素从上往下比较,小于节点往左移,大于节点往右移。取出元素如果没有子节点就直接删掉,如果只有一个子节点就直接替代被删除节点的位置,如果有两个子节点就用左子树中最大的节点替代(即左子树一直往右的那个根节点)也能用右子树中最小的值替代(右子树最小值最接近左子树最大值且更大所以没问题)。查找和新增一样。 | 数据多的时候查找快:二分查找法的树形结构体现。 | 数据不均衡朝单侧纵向延伸,树变高耗时久。 |
二叉树
平衡二叉树可以修正形状不均匀的树提高查找效率,也可以增加子节点数。子节点数可以自由设定并且形状均衡的树叫B树。
相关文章:
Android 优化 - 数据结构
一、概念 数据结构:数据存储在内存中的顺序和位置关系,选择合适的数据结构能提高内存的利用率。 线性结构链表结构树形结构 二、线性结构 结构优点缺点数组数据呈线性排列,初始化时就要指定长度且无法更改,会开辟一块连续的内…...
Linux环境开发工具之vim
前言 上一期我们已经介绍了软件包管理器yum, 已经可以在linux上查找、安装、卸载软件了,本期我们来介绍一下文本编辑器vim。 本期内容介绍 什么是vim vim的常见的模式以及切换 vim命令模式常见的操作 vim底行模式常见的操作 解决普通用户无法执行sudo问…...
「Linux系列」Shell介绍及起步
文章目录 一、Shell简介二、Shell脚本三、Shell解释器四、相关链接 一、Shell简介 Shell本身是一个用C语言编写的程序,它既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计…...
用pdf2docx将PDF转换成word文档
pdf2docx是一个Python模块,可以将PDF文件转换为docx格式的Word文档。 pdf2docx模块基于Python的pdfminer和python-docx库开发,可以在Windows、Linux和Mac系统上运行。它可以从PDF文件中提取文本和图片,并将其转换成可编辑的Word文档…...
STM32U5 ADC 自校准不成功的问题分析
1、引言 很多 STM32 系列中的 ADC 都带有自校准的功能。它提供了一个自动校准的过程,用于驱动包括 ADC 上电/掉电序列在内的所有校准动作。在这个过程中,ADC 计算出一个校准因子,并在内部应用到此 ADC 模块,直到下一次 ADC 掉电。…...
使用光标精灵更换电脑鼠标光标样式,一键安装使用
想要让自己在使用电脑时更具个性化,让工作和娱乐更加愉快,改变你的电脑指针光标皮肤可能是一个简单而有效的方法。很多人或许并不清楚如何轻松地调整电脑光标样式,下面我就来分享一种简单的方法。 电脑光标在系统里通常只有几种默认图案&…...
微服务day04(上)-- RabbitMQ学习与入门
1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应,但…...
Halcon 3D 平面拟合(区域采样、Z值过滤、平面拟合、平面移动)
Halcon 3D 平面拟合(区域采样、Z值过滤、平面拟合、平面移动) 链接:https://pan.baidu.com/s/1UfFyZ6y-EFq9jy0T_DTJGA 提取码:ewdi * 1.读取图片 ****************...
npm 插件 中 版本号为 星号 是什么意思
npm 插件 中 版本号为 星号 是什么意思 "dependencies": {"hstool/side-adaptor": "*","hsui/core": "*","h_ui": "*" }, "devDependencies": {"plugin-jsx": "*","…...
Codeforces\ Round\ 930(C.Bitwise Operation Wizard)
C o d e f o r c e s R o u n d 930 ( C . B i t w i s e O p e r a t i o n W i z a r d ) \Huge{Codeforces\ Round\ 930(C.Bitwise Operation Wizard)} Codeforces Round 930(C.BitwiseOperationWizard) 文章目录 题意思路注意 标程 题目链接:[B.Bitwise Operati…...
监控系统prometheus+grafana+发送告警信息
1、基础环境准备两台或更多的主机 2、关闭selinux vi /etc/selinux/config,修改SELINUX的值为disabled 3、关闭防火墙 systemctl disable firewalld systemctl stop firewalld 4、prometheus官网下载 https://prometheus.io/download/ 5、grafana官网下载 https…...
IoT 物联网场景中如何应对安全风险?——青创智通
工业物联网解决方案-工业IOT-青创智通 随着物联网(IoT)技术的快速发展,越来越多的设备、系统和应用被连接到互联网上,从而构建了一个庞大的物联网生态系统。然而,这种连接性也带来了前所未有的安全风险。在物联网场景…...
滴滴基于 Clickhouse 构建新一代日志存储系统
滴滴基于 Clickhouse 构建新一代日志存储系统 ClickHouse 是2016年开源的用于实时数据分析的一款高性能列式分布式数据库,支持向量化计算引擎、多核并行计算、高压缩比等功能,在分析型数据库中单表查询速度是最快的。2020年开始在滴滴内部大规模地推广和应用,服务网约车和日…...
虚拟主机去除index.php目录地址
复制代码到NGINX设置 虚拟主机去除index.php目录地址-复制代码-NGINX设置 location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s/$1 last; break; } } location ~ /\.ht { deny all; }...
JD商品详情原数据 API 返回值说明
一、应用场景 商品详情原数据API的应用场景广泛而多样。具体来说,它可以被用于以下方面: 1、电商平台数据分析:电商平台可以通过商品详情原数据API提取商品销售数据、质量评分、评论和反馈等信息,从而帮助用户更好地理解市场和竞…...
python日常刷题(一)
前言:本文记录2024年3月11日至2024年3月19日牛客网所做的基础题目(错题本): 🎬个人简介:努力学习ing 📋本专栏:python日常刷题 🎀CSDN主页:愚润求学 文章目录…...
Python 利用pandas和mysql-connector获取Excel数据写入到MySQL数据库
如何将Excel数据插入到MySQL数据库中 在实际应用中,我们可能需要将Excel表格中的数据导入到MySQL数据库中,以便于进行进一步的数据分析和处理。本文将介绍如何使用Python将Excel表格中的数据插入到MySQL数据库中。 导入必要的库 首先,我们…...
Stable Diffusion训练图片时,简陋的数据处理
0 图片从命名 如果有强迫症,看到似乎乱码的命名会不舒服,那么就批量从命名 import osdef rename_files_in_directory(directory, key_word, new_suffix):i 1for filename in os.listdir(directory):new_file key_word str(i).zfill(3) new_suffixsou…...
如何在ubuntu 18.04中升级python 3.6到3.7
在ubuntu下安装python 3.7有两种方法: 1,通过使用Deadsnakes PPA中的标准apt工具(本文暂时只介绍这种方法) 2,从源代码进行构建。 前提条件: 需要以root用户或具有sudo访问权限的用户身份登录才能在Ubuntu系统上安装软件包。 方法一:使用apt工具安装…...
python爬虫基础实验:通过DBLP数据库获取数据挖掘顶会KDD在2023年的论文收录和相关作者信息
Task1 读取网站主页整个页面的 html 内容并解码为文本串(可使用urllib.request的相应方法),将其以UTF-8编码格式写入page.txt文件。 Code1 import urllib.requestwith urllib.request.urlopen(https://dblp.dagstuhl.de/db/conf/kdd/kdd202…...
PyTorch 2.6镜像保姆级教程:3步完成GPU加速环境配置
PyTorch 2.6镜像保姆级教程:3步完成GPU加速环境配置 你是不是刚拿到一台新服务器,想快速搭建一个能跑深度学习的GPU环境,结果被各种驱动、CUDA版本、环境依赖搞得头大?或者你只是想快速验证一个PyTorch模型,却花了大半…...
React 部分注水(Partial Hydration):分析岛屿架构(Islands Architecture)对 React 的启示
拒绝“大水漫灌”:React 部分注水与岛屿架构的深度巡礼各位同仁,各位老铁,各位在键盘前敲得手指都要起茧子的前端工程师们,大家好。今天我们不聊 API,不聊 Hooks 的玄学,也不聊 TypeScript 的类型地狱。今天…...
从MATLAB验证到FPGA部署:手把手完成RGB/HSV色彩空间转换的完整流程
从MATLAB验证到FPGA部署:手把手完成RGB/HSV色彩空间转换的完整流程 色彩空间转换是数字图像处理中的基础操作,而RGB与HSV之间的转换尤为常见。对于FPGA开发者来说,如何将这一算法从软件仿真顺利迁移到硬件实现,是一个既考验理论功…...
React 领域驱动设计:在 React 项目中划分领域逻辑层(Domain Layer)与 UI 呈现层
各位同学,大家下午好!欢迎来到今天的讲座。我是你们的老朋友,一个在代码泥潭里摸爬滚打多年,头发比项目需求还少的资深编程专家。今天我们要聊一个听起来很学术,但实际上能救你们狗命的话题——React 领域驱动设计&…...
软件测试核心概念实战解析:从理论到习题的深度贯通
1. 软件测试基础理论的核心要点 软件测试作为软件开发过程中不可或缺的一环,其理论基础直接影响着测试工作的质量和效率。在软件测试领域,有几个核心概念是每个测试人员都必须掌握的。 首先,我们需要理解软件生命周期这个概念。简单来说&…...
最后90天窗口期:2026奇点大会确认的AGI算力-数据-对齐三角瓶颈即将被打破,你的团队准备好了吗?
第一章:2026奇点智能技术大会:通用人工智能最新进展 2026奇点智能技术大会(https://ml-summit.org) 本届大会首次披露多项突破性成果,标志着通用人工智能(AGI)正从理论验证迈入系统化工程实践阶段。来自DeepMind、Op…...
ClearerVoice-Studio:解密AI语音处理的终极完整指南
ClearerVoice-Studio:解密AI语音处理的终极完整指南 【免费下载链接】ClearerVoice-Studio An AI-Powered Speech Processing Toolkit and Open Source SOTA Pretrained Models, Supporting Speech Enhancement, Separation, and Target Speaker Extraction, etc. …...
如何快速掌握Comics Downloader:漫画离线阅读的终极解决方案
如何快速掌握Comics Downloader:漫画离线阅读的终极解决方案 【免费下载链接】comics-downloader tool to download comics and manga in pdf/epub/cbr/cbz from a website 项目地址: https://gitcode.com/gh_mirrors/co/comics-downloader 还在为在线漫画加…...
Django DRF权限怎么加_IsAuthenticated与自定义BasePermission
DRF中IsAuthenticated未生效最常见的原因是权限类未正确注册到视图或全局配置;必须显式声明permission_classes[IsAuthenticated],且多个权限类需全部返回True才通过,顺序不可颠倒。DRF里IsAuthenticated为什么没生效?最常见的原因…...
手把手教你理解交叉编译:从嵌入式开发到Rust编译Android So库
手把手教你理解交叉编译:从嵌入式开发到Rust编译Android So库 当你在x86架构的笔记本上按下编译按钮,却要为树莓派(ARM架构)生成可执行文件时,背后发生了什么?这种"在A平台编译B平台程序"的技术&…...
