爲什麼數組是從0開頭,而不是1?

我們常用的開發語言,比如C語言,C#,Java,Nodejs,Swift等,他們的數組起始編號都是0,這個原因究竟是什麼,已經很難回滾到歷史開始的階段進行追溯,不過,我們也可以做一些分析和總結。

1. 索引更快速

數組本身的殺手鐗技能,當通過索引隨機訪問時,對應的時間複雜度是O(1),由於數組是線性表結構,而數組的索引訪問時,其線性表結構決定訪問時可以通過索引直接計算出目標索引對應的地址值,以0開頭的索引可以直接用索引值本身來計算,跟1開頭時相比少一次減一操作,作爲最常用的數組,以0開頭可以減少一次CPU的計算。
或者可以理解爲,數組的索引本身指的是偏移量,相對於第一個索引位置的偏移量。

2. 歷史遺留問題

C語言選擇了以0開頭,而作爲最早被廣泛學習和接受,或者說大學裏面普及度相對較高的高級編程語言,其它C#,Java等實際工程中用到的編程語言,爲了減少遷移成本,所以繼續沿用了從0開頭。

3. 其實也有例外

當然,也不是所有編程語言都是從零開頭的整數,其實也有語言不是這麼設計的,比如Matlab的.m程序就是從1開始的,Python數組索引可以是負值,用負值表示方向,也只是範圍讀取(類似Matlab),當然Python默認也是從0開始。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章