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