- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
05|数组:为什么很多编程语言中数组都从0开始编号?
05| 0
数组:为什么很多编程语言中数组都从 开始编号?
提到数组,我想你肯定不陌生,甚至还会自信地说,它很简单啊。
是的,在每一种编程语言中,基本都会有数组这种数据类型。不过,它不仅仅是一种编程语言中的数据类型,还是一种最基础的数据结构。尽管数组看起来非常
基础、简单,但是我估计很多人都并没有理解这个基础数据结构的精髓。
在大部分编程语言中,数组都是从0开始编号的,但你是否下意识地想过,为什么数组要从0开始编号,而不是从1开始呢?从1开始不是更符合人类的思维习惯
吗?
你可以带着这个问题来学习接下来的内容。
如何实现随机访问?
什么是数组?我估计你心中已经有了答案。不过,我还是想用专业的话来给你做下解释。数组(Array )是一种线性表数据结构。它用一组连续的内存空间,来存
储一组具有相同类型的数据。
“ ”
这个定义里有几个关键词,理解了这几个关键词,我想你就能彻底掌握数组的概念了。下面就从我的角度分别给你 点拨 一下。
第一是线性表 (Linear List )。顾名思义,线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队
列、栈等也是线性表结构。
file:///F/temp/geektime/数据结构与算法之美/05数组:为什么很多编程语言中数组都从0开始编号?.html[2019/1/15 15:35:15]
05|数组:为什么很多编程语言中数组都从0开始编号?
而与它相对立的概念是非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。
file:///F/temp/geektime/数据结构与算法之美/05数组:为什么很多编程语言中数组都从0开始编号?.html[2019/1/15 15:35:15]
05|数组:为什么很多编程语言中数组都从0开始编号?
第二个是连续的内存空间和相同类型的数据。正是因为这两个限制,它才有了一个堪称“杀手锏”的特性:“随机访问”。但有利就有弊,这两个限制也让数组的很多
操作变得非常低效,比如要想在数组中删除、插入一个数据,为了保证连续性,就需要做大量的数据搬移工作。
说到数据的访问,那你知道数组是如何实现根据下标随机访问数组元素的吗?
file:///F/temp/geektime/数据结构与算法之美/05数组:为什么很多编程语言中数组都从0开始编号?.html[2019/1/15 15:35:15]
05|数组:为什么很多编程语言中数组都从0开始编号?
10 int int[] a = new int[10] a[10] 1000 1039
我们拿一个长度为 的 类型的数组 来举例。在我画的这个图中,计算机给数组 ,分配了一块连续内存空间 ~ ,其中,内存块的
首地址为base_address = 1000。
我们知道,计算机会给每个内存单元分配一个地址,计算机通过地址来访问内存中的数据。当计算机需要随机访问数组中的某个元素时,它会首先通过下面的寻
址公式,计算出该元素存储的内存地址:
a[i]_address = base_address + i * data_type_size
data_type_size int data_type_size 4
其中 表示数组中每个元素的大小。我们举的这个例子里,数组中存储的是 类型数据,所以 就为 个字
您可能关注的文档
- 01为什么要学习数据结构和算法?.pdf
- 02如何抓住重点,系统高效地学习数据结构与算法?.pdf
- 03复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?.pdf
- 04复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度.pdf
- 06链表(上):如何实现LRU缓存淘汰算法.pdf
- 07链表(下):如何轻松写出正确的链表代码?.pdf
- 08栈:如何实现浏览器的前进和后退功能?.pdf
- 11排序(上):为什么插入排序比冒泡排序更受欢迎?.pdf
- 09队列:队列在线程池等有限资源池中的应用.pdf
- 10递归:如何用三行代码找到“最终推荐人”?.pdf
- 新的一年工作展望.docx
- 医生年终个人工作的述职报告(3篇).docx
- 2023年消防设施操作员之消防设备中级技能考前冲刺练习题附答案详解.docx
- 2022-2023年环境影响评价工程师之环评技术导则与标准通关练习题包括详细解答.docx
- 2023年中级注册安全工程师之安全生产管理考前冲刺检测卷和答案.docx
- 2023年中级银行从业资格之中级银行管理考前冲刺测试卷提供答案解析.docx
- 2023年公共营养师之二级营养师通关模拟考试试卷附带答案.docx
- 证券分析师之发布证券研究报告业务考前冲刺模拟题库.docx
- 2022-2023年二级建造师之二建建设工程法规及相关知识综合提升测试卷附答案.docx
- 2023年二级建造师之二建机电工程实务通关模拟考试试卷提供答案解析.docx
1亿VIP精品文档
相关文档
最近下载
- 2023年江苏省小学科学实验知识竞赛题汇编.docx
- 2013款比亚迪速锐_汽车使用手册用户操作图解驾驶指南车主车辆说明书电子版.pdf
- 薪酬管理课后习题之复习与思考部分.pdf
- 学堂在线汽车理论(清华)章节作业答案.docx
- T_CRES 0018-2023 风力发电机组预应力基础锚栓笼组合件技术规范(OCR).pdf
- 同济大学毕业设计基坑支护设计计算书.doc
- 歌曲《离别开出花》歌词(排版完美打印).docx
- 【新整理】人教版小学数学五年级上册教材分析ppt课件【完整版】.pdf VIP
- 光纤激光切割机软件系统使用手册-广东大族粤铭激光集团股份有限公司.PDF
- 深入学习《中华人民共和国保守国家秘密法》PPT课件.pptx VIP
文档评论(0)