微信搜索 【微观技术】,关注这个不喜欢内卷的程序员。

精彩文章汇总 GitHub https://github.com/aalansehaiyang/technology-talk ,Star 12K ,汇总java生态圈常用技术框架、开源中间件,系统架构、数据库、大公司架构案例、常用三方类库、项目管理、线上问题排查、个人成长、思考等知识

大家好,我是Tom哥~

数组,作为技术同学一定不会陌生。天天和它打交道,闭着眼都认识它。

首先,我们来复习下数组的定义

数组是一组连续内存空间存储的具有相同类型的数据,整个排列像一条线一样,是一种线性表数据结构。

那么,问题来了,数组的下标为什么要从 0 开始?从 1 开始行不行?

端好你的小茶杯,开始进入正题

数组之所以广泛使用,是因为它支持随机访问。

整理了一份大厂常考面试题,这份pdf包括 Java基础、Java并发、JVM、MySQL、Redis、Spring、MyBatis、Kafka、设计模式等面试题,分享给大家。
下载地址:百度云链接:https://pan.baidu.com/s/1XHT4ppXTp430MEMW2D0-Bg 提取码: s3ab

什么叫随机访问?

数据在内存中都是按顺序存放的,通过下标直接触达到某一个元素存放的位置。

公式:

Tom哥[n] = base_address + n * data_size

  • base_address,表示数组的首地址

  • n,表示偏移量

  • data_size,表示数组类型的字节数

① 读取上面数组的 【0】位置的 `微`
② 读取上面数组的 【9999】位置的 `注`由于基于计算的内存地址读取数据,上面两种情况的耗费的时间是一样,时间复杂度为 O(1)

注意:想要使用随机访问,一定要满足两个条件: 1、连续的内存空间 2、相同类型的数据

知识补充:

随机访问对应的是顺序访问

顺序访问:链表在内存中不是按顺序存放的,而是通过指针连在一起,访问某一元素,必须从链头开始顺着指针才能找到某一个元素。

突然,一个奇怪的念头冒了出来,假如我们将数组的首个下标从 1 开始 ,会怎么样?

我们读取 下标为n 的数据

公式:

Tom哥[n] = base_address + (n-1) * data_size

与上面的公式的区别,多了一次 n-1 操作

虽然也能读取数组中的值,但是多了一次减法的指令运算。

数组是一个最基础最简单的数据结构。要知道我们的上层API内部很多都会依赖于数组,而互联网应用又讲究一个高并发,一言不合就是千万级QPS,如此高频的访问量,这个冗余的减运算 就会放大无数倍,产生巨大的性能损耗。

这样说,可能大家感受不一定明显!!!

”我在马路边捡到一分钱,把它交到警察叔叔手里边“。现在再有一分钱,你还会捡吗,估计很多人都看不上眼,但要是全国人民每人给你一分钱呢

14亿 * 1分钱 = 1400万 人民币

是不是可以立马辞职,回家躺平了!

量变引发质变,做软件开发,我们一定要考虑将性能优化到极致,骨子里透着工匠精神。


关于我:Tom哥,前阿里P7技术专家,出过专利,多年大厂实战经验。欢迎关注,我会持续输出更多经典原创文章,为你大厂助力。

欢迎小伙伴找Tom哥唠嗑聊天, 技术交流,围观朋友圈,人生打怪不再寂寞。

为什么数组的下标从 0 开始?相关推荐

  1. java数组下标0_Java语言中数组元素下标从0开始。

    [单选题]规范规定,硅酸盐水泥的初凝时间不小于( ). [判断题]打开/关闭"对象追踪"的功能键是F11. [判断题]break语句的作用是结束当前的循环体. [单选题]项目标识代 ...

  2. 790-C语言的数组元素下标为何从0开始?

    C语言的数组元素下标为何从0开始? 我们在学习数组时会有这个疑问,数组元素的下标为什么不从1开始呢? 从1开始不是更符合大家的日常习惯吗?生活中我们通常说第1个,而不是第0个. 的确,有些计算机语言如 ...

  3. C语言数组元素下标为何从0开始

    很多同学可能在学习数组时会有这个疑问,下标为什么不从1开始呢?从1开始不是更符合大家的日常习惯吗?生活中我们通常说第1个,而不是第0个.的确,有些计算机语言如早期的Pascal语言,数组元素的下标是从 ...

  4. c语言中的下标,c语言中数组的下标从什么入手下手?_后端开发

    c言语中数组的下标从0入手下手.由于假如数组元素下标从1入手下手,每次盘算地点时,须要多做一次减法操纵.所以,为了进步效力,C言语数组元素下标从0入手下手. c言语中数组的下标从0入手下手. 数组中的 ...

  5. c语言中的下标变量是什么,c语言中数组的下标从什么开始?

    c语言中数组的下标从0开始. 数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起.数组元素用整个数组的名字和它自己在数组中的顺序位置来表示. 例如:a[0]就表示名字为a的 ...

  6. php数组下标从1开始,数组的下标从什么开始

    数组的下标从0开始.数组是有序的元素序列.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用于区分数组的各个元素的数字编号称为下标. 本文操作环境:windows10系统.Th ...

  7. C语言试题四十四之移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。

    1. 题目 请编写一个函数function,它的功能是:移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后. 2 .温馨提示 C语言试题汇总里可 ...

  8. C语言:对包含10个整数的数组进行如下的操作,从下标为0的元素开始到最后一个元素,依次向前移动一个位置。

    /*对包含10个整数的数组进行如下的操作,从下标为0的元素开始到最后一个元素,依次向前移动一个位置.*/ #include <stdio.h> void main(void) {int a ...

  9. 数组的下标为什么从0开始而不是从1开始

    数组是一段连续的空间,要求a[i]就是求它的地址,然后找到它. 如果从0开始,则a[i]的地址= 首地址 + i*每个数据所占的长度: 如果从1开始,则a[i]的地址= 首地址 + (i-1)*每个数 ...

最新文章

  1. android wsdl封装,《android 解析WebService》
  2. 爱心的数学函数方程_高中数学中的函数与方程思想
  3. 【项目合作】移动端人体姿态估计
  4. 诗与远方:无题(八十)- 吸烟而作
  5. println 停止线程_停止调试使用Println并改用Delve
  6. 53 -leetcode 7. 整数反转
  7. mybatis plus 入门
  8. 拓端tecdat|R语言用普通最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
  9. 分析华为鸿蒙操作系统的特点,申万宏源-通信行业系列深度研究和分析报告之华为鸿蒙操作系统全景解构.pdf...
  10. FANUC机器人示教器介绍
  11. 服务器装win7没有硬盘模式,联想电脑BIOS里硬盘的SATA,AHCI模式里面怎么没有I...-联想p310工作站装win7,联想电脑工作站...
  12. linux系统 插上硬盘认不到,关于Linux系统增加SCSI硬盘不识别的问题及解决办法
  13. 傅里叶级数 三角形式 到 复数形式
  14. sql server 创建动态交叉表
  15. 七、python排序之先按汉语拼音排序再按笔画排序
  16. 2022 QS世界大学排名发布!MIT霸榜,清北冲上全球前20
  17. 2018软工实践作业一
  18. 不良贷款催收之技巧和策略
  19. AT_abc210_d [ABC210D] National Railway 的题解
  20. FPGA开发基础之三段式状态机

热门文章

  1. 阿里云发布BYOIP自带IP上云解决方案,助力企业平滑上云
  2. TCP连接超时模拟实战
  3. neovim 最终的配置
  4. 关于恒压源和恒流源内阻的公式讨论分析
  5. laya龙骨换装_刘先生-laya龙骨动画的几种使用方法
  6. oracle_利用ctl文件实现批量导入
  7. Ubuntu下安装ADguard(屏蔽浏览器广告的插件)
  8. 【Java 数据结构 算法】宁可累死自己, 也要卷死别人 3 数组
  9. 70. 爬楼梯 --力扣
  10. 电脑上如何添加或修改打印机的IP