关于数组我所知道的

简介: 关于数组我所知道的

image.png


关键词:基础 线性 连续


数组是什么


相同类型的数据的组合。

数组是一种线性表数据结构。将一组相同类型的数据存储在连续的内存空间。

线性表: 数据最多只有前和后两个方向的数据结构(数组和链表)。

数组连续的存储空间的特点,带来的优劣势:

  • 优势:“随机(直接)访问”。
  • 劣势:删除、插入操作变得低效, 复杂度为O(n)。为保证连续性,需要把数据往后移。


数组各个操作的复杂度


读取 O(1)


通过下标直接访问。再次强调一遍:得益于数组连续存储的特点。


查找 O(n)


通过遍历来查找O(n) ,用二分法复杂度是O(logn)

链表更适合插入、删除,时间复杂度 O(1)。


插入 O(n)

如果是数组末尾插入元素,那复杂度会是O(1),因为不用挪数据。


image.png


当添加的位置在数组中间时,需要把位置后面的数组往后挪一个位置。因此复杂度为O(n)。



image.png

如果数组是乱序的,那就直接数组末尾插入元素。复杂度O(1)。


删除 O(n)


当删除的数据在数组末尾时,直接将数组最后的元素去除,释放资源就可以。复杂度O(1)。

当目标元素在数组中间时,先把数据拿出,然后把改数据后面的元素一个个往前推,最后释放内存。复杂度O(n)。


image.png




衍生:集合


集合就是一个带有“不允许重复”这种简单限制的数组。而该限制也导致它的 插入 与数组性能不同。多了个查找的步骤。

插入步骤:

  1. 查找。确定元素不存在于数组中
  2. 插入。就是数组的正常插入。


leetcode



写题目看看自己是否掌握了数组的特性吧。

  • 11 盛最多水的容器
  • 26 删除排序数组中的重复项
  • 41 缺失的第一个正数
  • 88 合并两个有序数组
  • 169 多数元素

相关代码

参考资料:《数据结构与算法题解》 《我的第一本算法书》

目录
相关文章
|
10月前
|
监控 安全 调度
任务调度企业级场景下的新选择,兼容 XXL-JOB 通信协议
XXL-JOB 是一个开源的分布式任务调度平台,开箱即用、简单易上手,得到了很多开发者的喜爱。和其他中间件开源项目一样,当开发者把开源项目部署到公共云,应用到企业级场景中时,就会在稳定性、性能、安全、其他云产品间集成体验上提出更高的要求。基于此背景,阿里云微服务引擎 MSE 基于自研的分布式任务调度平台 SchedulerX,通过兼容 XXL-JOB 客户端的通信协议,在开源 XXL-JOB 版本的基础上,提升了稳定性、安全、性能、可观测等能力,满足企业客户的需求。此外,为方便测试,提供了一个月 400 元额度的免费试用和预付费首购 5 折、续费 6.5 折起的优惠。
478 170
|
开发工具 git
Jupyter Lab操作文档
**Jupyter Lab 概览:**集成编辑器、终端和自定义组件的环境。可定制主题、显示行号、切换语言。使用时,了解界面布局,通过`Ctrl+Enter`运行代码,`Shift+Enter`前进,`Alt+Enter`新建行。利用Markdown写作,通过Terminal执行命令,用快捷键提升效率,如`a/b`增删单元格,`m/y`切换模式。文件上传下载可使用OBS或终端工具。
Jupyter Lab操作文档
|
SQL 数据库 数据库管理
数据库SQL语句详解与应用实例
随着信息技术的飞速发展,数据库管理系统已成为各类企业和组织不可或缺的一部分。结构化查询语言(SQL)作为数据库管理系统的核心语言,掌握其用法对于任何数据库管理员和开发人员来说都至关重要。本文将详细介绍数据库SQL语句的基本语法、功能及其在实际应用中的使用场景。一、SQL语句概述结构化查询语言(SQL
562 3
|
弹性计算 小程序 关系型数据库
阿里云虚拟主机配置版本选择,共享独享、基础、标准、高级和豪华选择攻略
阿里云虚拟主机提供共享与独享版本,后者包括基础、标准、高级和豪华四种配置。选择依据为网站访问量及图片数量。独享型主机具备独立CPU、内存和带宽,利于SEO。基础版适合个人展示,标准版适用于企业官网,高级版适合博客论坛,豪华版则针对多媒体展示网站。然而,考虑到性价比,云服务器可能是更优选择,其不仅限于网站搭建,还支持多种应用场景,如小程序、App和游戏服务器等。
|
架构师 数据安全/隐私保护
深入探索领域分析:从问题空间到核心域
深入探索领域分析:从问题空间到核心域
|
监控
LabVIEW通过OPC与PLC通讯
LabVIEW通过OPC与PLC通讯
398 0
|
消息中间件 分布式计算 负载均衡
zookeeper+kafka
zookeeper+kafka
217 0
|
算法
class081 状压dp-下【算法】
class081 状压dp-下【算法】
113 2
|
存储 机器学习/深度学习 算法
【数学建模】 非线性规划+二次规划(上)
【数学建模】 非线性规划+二次规划(上)
365 0
|
算法 安全
二叉树的基本操作(如何计算二叉树的结点个数,二叉树的高度)
二叉树的基本操作(如何计算二叉树的结点个数,二叉树的高度)
795 0