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