《编程珠玑(第2版•修订版)》—第2章2.5节原理
本節(jié)書摘來自異步社區(qū)《編程珠璣(第2版?修訂版)》一書中的第2章2.5節(jié)原理,作者【美】Jon Bentley,更多章節(jié)內(nèi)容可以訪問云棲社區(qū)“異步社區(qū)”公眾號查看。
2.5 原理
排序。排序最顯而易見的用處是產(chǎn)生有序的輸出,該輸出既可以是系統(tǒng)規(guī)范要求的一部分,也可以是另一個程序(也許是一個二分搜索程序)的前期準(zhǔn)備工作。但是在變位詞問題中,排序并不是關(guān)注的焦點。排序是為了將相等的元素(本例中為標(biāo)識)集中到一起。這些標(biāo)識產(chǎn)生了另外一個排序應(yīng)用:將單詞內(nèi)字母排序使得同一個變位詞類中的單詞具有標(biāo)準(zhǔn)型。通過給每條記錄添加一個額外的鍵,并按照這些鍵進(jìn)行排序,排序函數(shù)可以用于重新排列磁盤文件中的數(shù)據(jù)。在第三部分,我們還會多次回顧排序這個主題。
二分搜索。該算法在有序表中查找元素時極為高效,并且可用于內(nèi)存排序或磁盤排序。唯一的缺陷就是整個表必須已知并且事先排好序。基于該簡單算法的思想在許多應(yīng)用程序中都有應(yīng)用。
標(biāo)識。當(dāng)使用等價關(guān)系來定義類時,定義一種標(biāo)識使得類中的每一項都具有相同的標(biāo)識,而該類以外的其他項則沒有該標(biāo)識,這是很有用的。對單詞中的字母排序可以產(chǎn)生一個用于變位詞類的標(biāo)識。其他標(biāo)識通過排序給出。然后使用一個計數(shù)來代表重復(fù)的次數(shù)(于是標(biāo)識“mississippi”可以寫成“i4m1p2s4”或?qū)?省略——“i4mp2s4”)。也可以使用一個包含26個整數(shù)的數(shù)組來標(biāo)識每個字母出現(xiàn)的次數(shù)。標(biāo)識的其他應(yīng)用包括:美國聯(lián)邦調(diào)查局用來索引指紋的方法,以及用來識別讀音相同但是拼寫不同的名字的Soundex啟發(fā)式方法:
Knuth⑧在其The Art of Computer Programming, Volume 3: Sorting and Sear ching⑨一書的第6章描述了Soundex方法。
問題定義。第1章指出確定用戶的真實需求是程序設(shè)計的根本。本章的中心思想是問題定義的下一步:使用哪些基本操作來解決問題?在本章的每個例子中,啊哈!靈機一動都定義了一個新的基本操作使得問題得到簡化。
問題解決者的觀點。優(yōu)秀程序員都有點懶:他們坐下來并等待靈機一動的出現(xiàn)而不急于使用最開始的想法編程。當(dāng)然,這必須通過在適當(dāng)?shù)臅r候開始寫代碼來加以平衡。真正的技能就在于對這個適當(dāng)時候的把握,這只能來源于解決問題和反思答案所獲得的經(jīng)驗。
總結(jié)
以上是生活随笔為你收集整理的《编程珠玑(第2版•修订版)》—第2章2.5节原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Adobe Acrobat X中文版经
- 下一篇: HiveQL之Database相关操作