当前位置:网站首页>莫让“学院派”限制我们的思维:在数组的中间位置删除数据一定比链表慢?
莫让“学院派”限制我们的思维:在数组的中间位置删除数据一定比链表慢?
2022-08-08 20:12:00 【中间件兴趣圈】
大家好,我是威哥,《RocketMQ技术内幕》一书作者,荣获RocketMQ官方社区优秀布道师、CSDN2020博客执之星Top2等荣誉称号。目前担任中通快递技术平台部资深架构师,主要负责全链路压测、消息中间件、数据同步等产品的研发与落地,拥有千亿级消息集群的运维经验,不仅实践经验丰富,而且对其源代码有深入且系统的研究。欢迎大家关注我,一起抱团发展。
在面试的时候,当面试官问我们数组与链表的差别时,大家在谈到性能对比时应该会不约而同的提到:数组在中间部分删除节点,由于会涉及到数据复制,其性能会低于链表,其操作说明如下图所示:
正如图中所述,删除中间节点3,需要将后面的数据,4,5分别向前移动一位,如果是删除数组的头部,整个数组元素都会被移动,其性能开销是非常大的。
但有其他解法没?答案是有的,但可能需要破坏顺序性语义。
破坏顺序性语义,其实在很多场景下其实是可以接受的。
举一个例子,我们在编程过程中,通常是需要从数据库中按照指定的条件进行筛选,然后对其进行业务逻辑,容器初始时保留的是数据库查询时的顺序,但其实业务逻辑处理并不要求我们严格按照数据库的顺序(条件顺序),这个时候如果对其进行删除,其实是可以打破其顺序性的。
如果可以打破顺序性语义,对删除中间数据,可以不进行大量复制,说明如下:
我们删除中间的元素3,然后直接将数组末的5写入到3点位置,只需要复制一次,比复制待删除元素后面的节点,其性能能得到显著提升。
打破常规思维,可能就是数据结构、算法的魅力所在,让我们一起开始学习数据与算法,关注我,私信:刷算法,共同抱团发展。
一键三连(关注、点赞、留言)是对我最大的鼓励。
打造完备分布式架构体系
- 源码分析RocketMQ专栏(48篇+)
- 源码分析Sentinel专栏(12篇+)
- 源码分析Dubbo专栏(28篇+)
- 源码分析Mybatis专栏
- 源码分析Netty专栏(29篇+)
- 源码分析JUC专栏
- 源码分析Elasticjob专栏
- Elasticsearch专栏(20篇+)
- 源码分析MyCat专栏
- 源码分析Canal专栏
一键三连(关注、点赞、留言)是对我最大的鼓励。
边栏推荐
- uni-app微信小程序如何渲染markdown
- 数据解读!智能座舱“升级战”背后,本土供应链加速崛起
- Maykel Studio OpenHarmony Device Development Training Notes - Chapter 6 Study Notes
- 劳务派遣业务流程图
- nacos作用
- 1259 Alice and Bob
- fillder4不间断提示the system proxy was change,看我解决
- Codeforces Round #705 (Div. 2)
- Wps文档云同步如何开启?Wps打开文档云同步的方法
- Codeforces Round #713 (Div. 3) E(思维)
猜你喜欢
数据解读!智能座舱“升级战”背后,本土供应链加速崛起
一文教你普罗米修斯Prometheus的基础应用
PX4-Things you need to know for secondary development of flight control-Cxm
梅科尔工作室OpenHarmony设备开发培训笔记-第一章学习笔记
wps表格怎么设置公式自动计算?wps表格设置公式自动计算的方法
Dry goods: design high concurrency architecture from scratch
从 VLAN 到 IPVLAN: 聊聊虚拟网络设备及其在云原生中的应用
iMeta | 深圳先进院戴磊组开发可同时提取共存菌株的组成和基因成分谱的菌株分析工具...
JMeter测试接口并发场景
What are the latest developments in the handling of false information?KDD2022 "Fighting Misinformation and Responding to Media Bias" tutorial, 161 pages ppt
随机推荐
亚洲首个!朱永官院士荣获2022年国际土壤科学联合会李比希奖
经验分享|低成本快节奏搭建企业知识管理系统的方法
腾讯云原生成本优化平台FinOps Crane荣获国家级大奖!
我们为什么要远离Service Mesh
黑猫带你学Makefile第8篇:uboot/kernel中的makefile基本语法与流程
What are the role of document management system for companies?
laravel run scheduler command on weekdays (except holidays)
莅临GOPS大会龙智展位,获取Forrester最新报告:《Forrester Wave:2021年第四季度企业服务管理报告》
C语言初阶-指针
黑猫带你学Makefile第1篇:什么是Makefile
uni-app微信小程序如何渲染markdown
兼容并蓄广纳百川,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang复合容器类型的声明和使用EP04
The WPF main form calls User32's SetWindowPos to set the form to the top, which will cause the problem of grabbing the focus with other forms
微服务负载均衡器Ribbon
Codeforces Round #712 (Div. 2)(CD)
给大龄准备转行网络工程师的朋友一些建议
稀疏矩阵转置--C语言
PyTorch入门:(一)数据加载
JSD-2204-Session-Token-JWT-Day12
树形DP总结