原创 无码 亚洲亚洲原创第一会所无码_在线a亚洲老鸭窝天堂_成 人 网 站 视频免费_久久久国产精品无码一区二区_青青草国产三级精品三级

您當(dāng)前的位置:首頁 >  快訊 >> 
問題解析:為什么數(shù)組下標(biāo)從0?開始而不是?1?? 世界微速訊

時(shí)間:2023-04-24 06:04:42    來源 : 腳本之家

目錄
正文首先來看個(gè)案例1 和 2 不等式的區(qū)別遵循不等式 1 的規(guī)則:

正文

很多小伙伴初學(xué)編程的時(shí)候都被元素下標(biāo)折磨過,為什么很多編程語言要把 0 作為第一個(gè)下標(biāo)索引,而不是直觀的 1 呢?


(資料圖片)

這個(gè)問題Dijkstra已經(jīng)解答過了,沒錯(cuò),就是你知道的 Dijkstra,Dijkstra 最短路徑算法,荷蘭語全名是 Edsger Wybe Dijkstra,于 1972 年獲得了圖靈獎(jiǎng),除了上面說的最短路徑算法,還有眾所周知的信號(hào)量和 PV 原語、銀行家算法等也是這位巨佬提出的。

原文在這里:https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html

感興趣的小伙伴可以去看下全文,下面我總結(jié)幾段核心的觀點(diǎn):

首先來看個(gè)案例

如何用一個(gè)不等式(或者說表達(dá)式)來表示[2,3,4,5,6,7,8,9,10,11,12]這個(gè)連續(xù)的整數(shù)序列(一共 11 個(gè)數(shù))?

假設(shè)i是一個(gè)整數(shù),那么我們能夠迅速地寫出如下四個(gè)符合上述連續(xù)序列的不等式:

1)2 <= i < 13

2)1 < i <= 12

3)2 <= i <= 12

4)1 < i < 13

以上四個(gè)不等式均滿足要求,那是否有理由選擇其中的一種而不是另一種?

Dijkstra 說有理由的,選1和2,因?yàn)檫@倆不等式有個(gè)很突出的優(yōu)點(diǎn),就是不等式邊界的差(不等式右邊 - 不等式左邊)正好等于連續(xù)序列的長度

這里可以排除掉 3 和 4,那么 1 和 2 該如何選出最優(yōu)的表示?

1 和 2 不等式的區(qū)別

1 不等式左邊(下界)等于序列中的最小值,不等式右邊(上界)大于序列中的最大值

2 不等式左邊(下界)小于序列中的最小值,不等式右邊(上界)等于序列中的最大值

對(duì)于第 2 個(gè)不等式來說,下界小于序列中的最小值,這會(huì)出現(xiàn)一個(gè)問題,比如我們的連續(xù)序列是[0,1,2,3,4]

那么按照第 2 個(gè)不等式的寫法,不等式的左邊就是-1,-1 是非自然數(shù),而我們需要表示的連續(xù)序列是自然數(shù)序列,所以第 2 個(gè)不等式很不優(yōu)雅:我們需要用一個(gè) 非自然數(shù) 來作為 全是自然數(shù)的序列 的下界

因此,綜上所述,不等式 1 是最優(yōu)雅的選擇。

那么,選出一個(gè)看著非常順眼的不等式來表達(dá)長度為 N 的連續(xù)序列之后,下一個(gè)令人煩惱的問題是該為起始元素分配什么下標(biāo)值?

遵循不等式 1 的規(guī)則:

當(dāng)從下標(biāo) 1 開始時(shí),下標(biāo)范圍1 ≤ i < N+1當(dāng)從下標(biāo) 0 開始時(shí),下標(biāo)范圍0 ≤ i < N

哪個(gè)更優(yōu)雅?

Dijkstra 是這樣解釋的:從下標(biāo) 0 開始能夠給出更好的不等式,因?yàn)樵氐南聵?biāo)就等于序列中它前面的元素?cái)?shù)(或者說 “偏移量”)。

問題解決!文末貼上巨佬 Dijkstra 的手稿:

以上就是問題解析:為什么數(shù)組下標(biāo)從0 開始而不是 1 ?的詳細(xì)內(nèi)容,更多關(guān)于數(shù)組下標(biāo)問題的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

標(biāo)簽:

最新發(fā)布

熱門推薦

X 關(guān)閉

X 關(guān)閉