1.2.5 確定適當的數據結構
盡管算法設計技術提供了一套通用的方法來對問題算法求解,但為特定問題設計算法仍然是一項具有挑戰性的任務。有些設計技術不適用于目標問題;有時多種設計技術需要結合起來解決特定問題;還有一些問題,很難確定是不是特定算法設計技術的具體應用。即使特定的設計技術能夠應用于具體問題,設計算法仍然需要設計人員精心構思。當然,選擇算法設計技術或者編寫算法都可以熟能生巧,但這兩者本身并不是簡單的工作。
當然,設計人員需要根據算法執行的操作為算法選擇適合的數據結構。例如,在1.1節介紹的“埃拉托色尼篩選法”,如果實現時使用鏈表而不是數組,它的運行時間會更長(為什么?)。同時請注意,第6章和第7章所討論的一些算法設計技術,它們非常依賴于對問題實例的數據進行構造和重構。很多年以前,一本很有影響的教材就預言了算法和數據結構將會成為計算機編程的重要基礎,它的書名也很貼切,就叫《算法+數據結構=程序》([Wir76])。在面向對象編程的新領域,數據結構對于算法的設計和分析仍然是至關重要的。我們在1.4節將會復習基礎的數據結構。