更新時間:2023-05-26 來源:黑馬程序員 瀏覽量:
計算機軟件的最終成果都是以程序的形式體現(xiàn)的,一個程序應當包含以下兩方面的內(nèi)容:
(1)對數(shù)據(jù)的描述。在程序中指定用到哪些數(shù)據(jù)以及這些數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,也就是數(shù)據(jù)結構。
(2)對數(shù)據(jù)操作的描述。即操作步驟,也就是算法。
數(shù)據(jù)結構是算法的基礎,算法是數(shù)據(jù)結構的靈魂。數(shù)據(jù)結構設計和算法分析的目的是設計更好的程序,程序的本質是為要處理的問題選擇好的數(shù)據(jù)結構,同時在此結構上施加一種好的算法。
對于一個程序來說,數(shù)據(jù)是原料。一個程序所要進行的計算或處理總是以某些數(shù)據(jù)為對象,將這些松散無組織的數(shù)據(jù)組織成一個數(shù)據(jù)結構,算法操作的就是這些數(shù)據(jù)結的設計和選擇要結合數(shù)據(jù)結構,簡單地說,數(shù)據(jù)結構的設計就是選擇存儲方式,如確定問題中的信息是用數(shù)據(jù)存儲還是普通的變量存儲或其他更加復雜的數(shù)據(jù)結構存儲。算法設計的實質是為實際問題要處理的數(shù)據(jù)選擇一種恰當?shù)拇鎯Y構,并在選定的存儲結構上設計一個好的算法,因為一個數(shù)據(jù)結構會對應多種不同的算法,此時就要利用時間復雜度與空間復雜度來選擇一個最優(yōu)算法。不同的數(shù)據(jù)結構設計將對應差異很大的算法。
數(shù)據(jù)存儲結構會影響算法的好壞,因此在選擇存儲結構時,也要考慮其對算法的影響。例如,如果存儲結構的存儲能力較強,則可以存儲較多的信息,算法將會好設計一些。反之,對于過于簡單的數(shù)據(jù)結構,于該結構的算法設計可能會比較復雜一些。另外,數(shù)據(jù)結構是算法操作的基礎,其選擇要充分考慮算法的各種操作,與算法的操作相適應。
算法通常是決定程序效率的關鍵,但一切算法最終都要在相應的數(shù)據(jù)結構上實現(xiàn),許多算法的精髓就是在于選擇了合適的數(shù)據(jù)結構作為基礎。在程序設計中,不但要注重算法設計,也要正確選擇數(shù)據(jù)結構,這樣往往能夠事半功倍。