為什麼《演算法導論》中的陣列序號是從1開始的?

2025-01-02 06:55:17 字數 1361 閱讀 9122

1樓:猴33970坪抖

c語言下標從零開始是個錯誤,並且 index 也是乙個有誤導性的名詞,它表示的是偏移量,明明應該用 offset。

然後 c 的徒子徒孫都學了它,導致現在很多人都誤以為下標應該從 0 開始。

早期蠻荒時代,很多東西都不科學,演算法導論作者致力於與落後文明作鬥爭,然而卻遭到了樓主你的不理解,實乃程式設計屆一大憾事。

我再說一遍,c 是結構化的彙編,下標基 0 是受到了 pdp-11 指令集的影響,更老的語言(比如 fortran)都是基 1 的。

另外用 0/非 0 代表 false/true 也是 pdp-11 中 tst 指令和 z 位的行為。

可能是這本書強調演算法的求學思想,所以從一更加符合數學的陣列規定。

但是程式設計的時候,指標這個東西會經常用到,如果用a(o)作為第乙個元素 那麼*a+n就等同於a(n) 比較方便。

演算法導論上的這個問題呢,我覺得我比較同意樓上的看法,這個書上面的很多的程式並不是可以敲上去直接執行的,他只是偽**,思想而已,給人看的,人類的普遍思維是從1開始,那麼書頁就是從1開始了。

說程式語言是給機器看而偽**是給人看的簡直是逗大家笑吧。程式語言設計出來就是給人看的。

另外從0開始在很多方便都極好。我覺得寫多**都能體會到吧。

幫算導洗地:

演算法導論通篇用的是偽** 是給人類閱讀理解的 不是設計給機器去執行的。

而絕大多數情況下, index 從 1 開始更符合人類直覺(如果你對這點有異議請參考的答案 )

但少數情況下, index 從 0 開始更符合人類直覺。例如書中 hashing 還有 fft 那塊內容, index 是從 0 開始的。

其實寫幾天 pascal 你就適應啦。。<

2樓:知哥26361碧究

該書是一本十分經典的計算機演算法書籍,與高德納(donald 的《電腦程式設計藝術》(the art of computer programming)相媲美。 《演算法導論》由thomas stein四人合作編著(其中clifford stein是第二版開始參與的合著者)。本書的最大特點就是將嚴謹性和全面性融入在了一起。

演算法導論》自第一版出版以來,已經成為世界範圍內廣泛使用的大學教材和專業人員的標準參考手冊。本書全面論述了演算法的內容,從一定深度上涵蓋了演算法的諸多方面,同時其講授和分析方法又兼顧了各個層次讀者的接受能力。各章內容自成體系,可作為獨立單元學習。

所有演算法都用英文和偽碼描述,使具備初步程式設計經驗的人也可讀懂。全書講解通俗易懂,且不失深度和數學上的嚴謹性。第二版增加了新的章節,如演算法作用、概率分析與隨機演算法、線性程式設計等,幾乎對第一版的各個部分都作了大量修訂。

3樓:看雪聼風

可惜,丹尼斯不久前去世了。你才敢把這麼低階無聊的問題擺出來。

二維陣列a中p a,當 p後為什麼指向的是a

a是乙個二級源指標 指向乙個指標陣列,為a 0 a 1 a 2 a 0 a 1 a 2 又分別是指標,指向他們的兒子 所以p a p p本來指向a 0 後增一,指向a 1 a 1 就是a 1 0 p i j p i求行下標自j是列bai下標 dup i j p i 是行下標,j是列下標 p i j ...

php 資料庫中的陣列用array 為什麼不能讀取出來

要使用eval來處理。不用搞得太複雜了。test 3 1 2 1 1 1 eval test array test print r test 需要序列化。關於php獲取資料庫的內容存為陣列的問題 為什麼php中sql語句查詢資料庫輸出的全是array?我通過乙個頁面讓使用者提交了12個多選列表,獲取...

什麼是最優適應分配演算法,記憶體分配中的快速適應演算法

1無約束非線性最優化問題常用演算法 梯度法 最速下降法 共軛梯度法 變尺度法和步長加速法.其中,前三個要用到函式的一階導數或二階導數,適用於函式表示式導數存在且求導簡單的情況,而步長加速法則相反,適用於函式表達示複雜,甚至無解析表示式,或導數不存在情況.2約束非線性最優化問題常用演算法 按照是否化成...