【数据结构】数组

第一章、为什么数组的下标一般从0开始编号

        提到数组,读者肯定不陌生,甚至还会很自信地说,数组很简单。编程语言中一般会有数组这种数据类型。不过,它不仅是编程语言中的一种数据类型,还是基础的数据结构。尽管数组看起来非常基础,简单,但是深究起来,数组还有很多值得思考的地方。

        例如,在大部分编程语言中,数组的下标是从0开始编号的。读者是否想过,为什么数组的下标要从0开始编号,而不是从1开始尼?从1开始编号不是更符合人类的思维习惯吗?读者可以带着这些问题学习本章的内容。

一、数组的定义

什么是数组?

数组是一种线性表数据结构,它用一组连续的内存空间存储一组具有相同类型的数据

        数组的定义中的第一个关键词是“线性表”(linear list)。顾名思义,线性表指的是数据排列成一条线一样的结构。线性表中的数据只有前、后两个方向。其实,除数组之外,本章要讲到的链表,栈和队列都是线性表结构,如图所示:

        与线性表相对立的概念是非线性表,如树,图等,如图所示。之所以称为非线性表,是因为数据之间并不是简单的前后关系。

        数组的定义中的第二个关键词和第三个关键词是“连续的内存空间”和“相同类型的数据”。正是因为这两个限制,数组才有了一个重要的特性:随机访问。不过,有利就有弊,这两个限制也让数组的很多操作变得非常低效。例如,要想在数组中插入或者删除一个数据,为了保证数组中存储数据的连续性,我们需要做大量的数据搬移工作。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营29期|day64 任务以及具体安排

第十章 单调栈part03 有了之前单调栈的铺垫&#xff0c;这道题目就不难了。 84.柱状图中最大的矩形class Solution {int largestRectangleArea(int[] heights) {Stack<Integer> st new Stack<Integer>();// 数组扩容&#xff0c;在头和尾各加入一个元素int [] ne…

半小时到秒级,京东零售定时任务优化怎么做的?

导言&#xff1a; 京东零售技术团队通过真实线上案例总结了针对海量数据批处理任务的一些通用优化方法&#xff0c;除了供大家借鉴参考之外&#xff0c;也更希望通过这篇文章呼吁大家在平时开发程序时能够更加注意程序的性能和所消耗的资源&#xff0c;避免在流量突增时给系统…

【web APIs】3、(学习笔记)有案例!

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、概念其他事件页面加载事件元素滚动事件页面尺寸事件 元素尺寸与位置 二、案例举例电梯导航 前言 掌握阻止事件冒泡的方法理解事件委托的实现原理 一、概念…

【MATLAB源码-第151期】基于matlab的开普勒化算法(KOA)无人机三维路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 开普勒优化算法&#xff08;Kepler Optimization Algorithm, KOA&#xff09;是一个虚构的、灵感来自天文学的优化算法&#xff0c;它借鉴了开普勒行星运动定律的概念来设计。在这个构想中&#xff0c;算法模仿行星围绕太阳的…

免费网站搭建

免费网站搭建 一.领取一个免费域名和SSL证书&#xff0c;和CDN 特点&#xff1a;支持Cloudflare CDN Cloudflare是全球知名的CDN提供商&#xff0c;如果你不想暴露你的源站&#xff0c;又想使用我们的二级域名&#xff0c;不需要前往Cloudflare添加域名&#xff0c;修改NS记录…

特斯拉掀起「端到端」风暴,自动驾驶持续开卷

作者 |三少爷 编辑 |祥威 最近&#xff0c;特斯拉向在美用户推送了版本号为V12.1.2 Beta的端到端FSD&#xff0c;版本推送后&#xff0c;海外的特斯拉车主和视频博主上传了一些测试视频&#xff0c;测评视频本身没有太多好说的&#xff0c;真正值得关注的是「端到端」。 自马…

C++ 之LeetCode刷题记录(三十五)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 目标&#xff1a;执行用时击败90%以上使用 C 的用户。 15. 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], num…

(2024,Sora 逆向工程,DiT,LVM 技术综述)Sora:大视觉模型的背景、技术、局限性和机遇回顾

Sora: A Review on Background, Technology, Limitations, and Opportunities of Large Vision Models 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 简介 2. 背景 2.1…

「算法」前缀和

前缀和主要解决求数组中某段区间元素和的问题&#xff0c;使用前缀和解决问题的步骤如下: 预处理一个前缀和数组使用这个数组 一维前缀和 现在有一个一维数组nums 预处理前缀和数组 定义一个数组 dp[]&#xff0c;dp[i]表示 nums 中 [0,i-1] 区间的元素和&#xff0c;那我们…

《互联网的世界》第二讲-最短路径优先

昨天讲 dns 时讲过&#xff0c;“你问一个当地人最近的厕所在哪&#xff0c;路人给你一个地址…”&#xff0c;可是只有地址还不够&#xff0c;如何到达那里呢&#xff1f;这是本节的内容。 自然的方式是&#xff0c;一边走一边问&#xff0c;根据路人的指示继续一边走一边问…

Cap0:TensorRT环境搭建

文章目录 1、安装TensorRT1.1、下载TensorRT压缩包1.2、配置环境变量 2、测试2.1、测试源码2.2、编译源码 1、安装TensorRT TensorRT是针对NVIDIA显卡设备的加速方案&#xff0c;你要使用TensorRT则证明你有一定的深度学习基础&#xff0c;那么在你的Ubuntu上配置好显卡驱动、…

Vue.js实战:构建一个简单的学生管理系统

摘要&#xff1a; 本文将引导你使用Vue.js框架来构建一个完整的学生管理系统。我们将从环境搭建开始&#xff0c;逐步介绍Vue的核心概念、组件创建、数据管理、事件处理、路由配置以及项目构建等关键步骤。通过实际操作&#xff0c;你将能够掌握Vue.js的基础知识&#xff0c;并…

基础!!!吴恩达deeplearning.ai:多标签分类与高级优化方法

以下内容有任何不理解可以翻看我之前的博客哦&#xff1a;吴恩达deeplearning.ai专栏 文章目录 智能驾驶高级优化方法梯度下降算法回顾 Adam算法(Adaptive Moment estimation)模型部分编译部分拟合部分 之前我们已经学习了多分类问题的神经网络的搭建。而有一种特殊的分类问题…

【亚马逊云新春特辑③】构生成式 AI 文生图工具之借助ControlNet进行AI绘画创作【使用OpenPose优化人物二维码】

文章目录 2.1 使用OpenPose优化人物二维码1&#xff09;数据及环境准备2&#xff09;导入骨架数据并启用OpenPose控制单元3&#xff09;导入二维码并生成美化后的二维码图片 2.1 使用OpenPose优化人物二维码 在上一节体验到了使用ControlNet并结合QR Code生成二维码&#xff0…

雾锁王国服务器官方配置要求说明

雾锁王国/Enshrouded服务器CPU内存配置如何选择&#xff1f;阿里云服务器网aliyunfuwuqi.com建议选择8核32G配置&#xff0c;支持4人玩家畅玩&#xff0c;自带10M公网带宽&#xff0c;1个月90元&#xff0c;3个月271元&#xff0c;幻兽帕鲁服务器申请页面 https://t.aliyun.com…

自动从金蝶取数,做BI报表的工具,快来长见识!

技术越进步&#xff0c;分析工具越智能&#xff0c;如今做数据分析、数据可视化&#xff0c;不仅能连接金蝶系统&#xff0c;更能直接从金蝶ERP中取数做分析&#xff0c;自动输出BI数据可视化分析报表。这就是奥威-金蝶BI方案。 是骡子是马&#xff0c;牵出来遛遛就知道&#…

STM32标准库开发—硬件SPI外设

SPI外设简介 SPI1与SPI2所挂载的总线位置不一样&#xff0c;所以时钟频率也不一样&#xff0c;SPI2挂载在APB1时钟频率为36MHZ是SPI1的一半 I2S是一种音频传输协议&#xff0c;适用于STM32大容量产品 一般来说串口发送数据时是低位先行&#xff0c;SPI通信是高位先行 SPI框图 发…

看完这篇爽文我终于学会了示波器(一)

大家好&#xff0c;我是砖一。 示波器是电子行业的工程师的“老熟人”了&#xff0c;有句老话说&#xff1a;电子工程师不能失去示波器&#xff0c;就像西方不能失去耶路撒冷&#xff0c;足以见得示波器的重要地位。今天讲解一下基础知识篇&#xff0c;话不多说&#xff0c;直…

Day 4.进程间的通信:管道和通信

进程间的通信 1.管道 2.信号 3.消息队列 4.共享内存 5.信号灯 6.套接字 1.管道&#xff08;一次读4k&#xff0c;一共能读16次&#xff09;64k 1.无名管道 无名管道只能用于具有亲缘关系的进程间的通信 pipe int pipe(int pipefd[2]); 功能&#xff1a;创建一个无名…

云原生高级第一次作业

目录 实验需求&#xff1a; 第一个实验步骤&#xff1a; openEuler 二进制方式安装MySQL 8.0.x 1.首先需要获取软件包 2.然后安装tar和xz格式可进行解压工具 3.接下来就是安装MySQL 4.配置环境变量 5.登入并修改密码 6.停止服务脚本 7.提供配置文件 8.进入/etc/my.cnf…