为什么数组下标从0开始而不是1?Dijkstra的权威解答
创作时间:
作者:
@小白创作中心
为什么数组下标从0开始而不是1?Dijkstra的权威解答
引用
1
来源
1.
https://fushidao.cc/wangluobiancheng/588.html
很多初学者在学习编程时都会被数组下标从0开始而不是1的问题困扰。这个问题的答案,早在1972年就由图灵奖得主Dijkstra给出了。
Dijkstra,全名Edsger Wybe Dijkstra,是一位在计算机科学领域做出卓越贡献的荷兰科学家。他不仅提出了著名的Dijkstra最短路径算法,还发明了信号量和PV原语、银行家算法等重要概念。在1972年获得图灵奖时,他就已经对数组下标从0开始的问题给出了令人信服的解释。
一个简单的例子
让我们通过一个具体的例子来理解这个问题。假设我们需要用一个不等式来表示以下连续的整数序列:
[2,3,4,5,6,7,8,9,10,11,12]
这是一个包含11个数的序列。我们可以写出以下四个符合要求的不等式:
2 <= i < 131 < i <= 122 <= i <= 121 < i < 13
这些不等式都正确地表示了上述序列,但是否有理由选择其中的一种而不是另一种呢?
选择最优雅的表示方式
Dijkstra指出,选择1和2这两个不等式的原因在于它们有一个突出的优点:不等式边界的差(不等式右边 - 不等式左边)正好等于连续序列的长度。
进一步分析1和2的区别:
- 对于第1个不等式,左边(下界)等于序列中的最小值,右边(上界)大于序列中的最大值。
- 对于第2个不等式,左边(下界)小于序列中的最小值,右边(上界)等于序列中的最大值。
如果我们的序列是[0,1,2,3,4],按照第2个不等式的写法,不等式的左边就会变成-1,这在表示全是自然数的序列时显得不够优雅。因此,第1个不等式是最优雅的选择。
数组下标的选择
接下来,我们需要决定数组的起始下标应该从1开始还是从0开始。根据不等式1的规则:
- 如果从下标1开始,下标范围是
1 ≤ i < N+1 - 如果从下标0开始,下标范围是
0 ≤ i < N
Dijkstra解释说,从下标0开始能够给出更好的不等式,因为元素的下标就等于序列中它前面的元素数(或者说“偏移量”)。
结论
通过这个简单的例子,我们可以看到为什么数组下标从0开始是一个更优雅的设计选择。这种设计不仅在数学上更加简洁,而且在实际编程中也更加直观和方便。
以下是Dijkstra的手稿,展示了他当年是如何思考这个问题的:
热门推荐
赤峰发现大型红山文化遗址,出土迄今最大玉龙
世界唯一石林遇草原沙漠:赤峰四大景点游玩攻略
二十字成四十诗,清代茶壶上的回文绝唱
《封神第一部》票房破26亿,创新演绎让传统文化焕发新生
王家卫改编《繁花》:创新叙事与传统美学的完美融合
从金刚菩提到橄榄核:10种文玩手串的包浆之美
象棋“录音门”:一场震动棋坛的诚信危机
象棋录音门再掀风波,三大高手遭终身禁赛
海岸松树皮提取物:心血管健康的天然守护者
香港一点心:米其林推荐的平民美食天堂
亚洲最大瀑布黄果树:免费政策出台,游玩全攻略
拍出不一样的黄果树瀑布:4个鲜为人知的绝美机位
AI技术,为公共安全提供更全面保障
治安综合执法管理系统
郑钦文5号种子战托多尼,冲击澳网首个大满贯冠军
一文读懂维生素B2:功效、食物来源与推荐摄入量
住房公积金提取新规来了,快来看看怎么操作!
厄贝沙坦:降压效果好、副作用小,兼具心血管和肾脏保护等多重功效
二甲硅油片储存指南:常温干燥避光,确保药效持久
奥美拉唑、吗丁啉、二甲硅油片:这三种胃药不宜同时服用
二甲硅油片VS吗丁啉:两种常见胃药的作用机制与适用症状
研究证实:二甲硅油片可显著改善结肠镜检查泡沫问题
二甲硅油片:消胀气有效,但别滥用
林奈:用双名命名法统一生物分类的先驱
声音嘶哑莫轻视:从原因分析到治疗预防全攻略
植物分类学:一门被误解的深度科学
平行垂直线构图:让画面稳重大气的构图技巧
贺友直《朝阳沟》构图揭秘:艺术作品中的构图赏析
掌握构图技巧,拍出朋友圈点赞王
甲状腺结节的科学调理指南