軟考程序員數據結構復習筆記[1]

程序員 責任編輯:yewlya 2008-06-18

添加老師微信

備考咨詢

加我微信

摘要:數據就是指能夠被計算機識別、存儲和加工處理的信息的載體。數據元素是數據的基本單位,有時一個數據元素可以由若干個數據項組成。數據項是具有獨立含義的最小標識單位。如整數這個集合中,10這個數就可稱是一個數據元素.又比如在一個數據庫(關系式數據庫)中,一個記錄可稱為一個數據元素,而這個元素中的某一字段就是一個數據項。

數據就是指能夠被計算機識別、存儲和加工處理的信息的載體。

數據元素是數據的基本單位,有時一個數據元素可以由若干個數據項組成。數據項是具有獨立含義的最小標識單位。如整數這個集合中,10這個數就可稱是一個數據元素.又比如在一個數據庫(關系式數據庫)中,一個記錄可稱為一個數據元素,而這個元素中的某一字段就是一個數據項。

數據結構的定義雖然沒有標準,但是它包括以下三方面內容:邏輯結構、存儲結構、和對數據的操作。這一段比較重要,我用自己的語言來說明一下,大家看看是不是這樣。

比如一個表(數據庫),我們就稱它為一個數據結構,它由很多記錄(數據元素)組成,每個元素又包括很多字段(數據項)組成。那么這張表的邏輯結構是怎么樣的呢? 我們分析數據結構都是從結點(其實也就是元素、記錄、頂點,雖然在各種情況下所用名字不同,但說的是同一個東東)之間的關系來分析的,對于這個表中的任一個記錄(結點),它只有一個直接前趨,只有一個直接后繼(前趨后繼就是前相鄰后相鄰的意思),整個表只有一個開始結點和一個終端結點,那我們知道了這些關系就能明白這個表的邏輯結構了。

而存儲結構則是指用計算機語言如何表示結點之間的這種關系。如上面的表,在計算機語言中描述為連續(xù)存放在一片內存單元中,還是隨機的存放在內存中再用指針把它們鏈接在一起,這兩種表示法就成為兩種不同的存儲結構。(注意,在本課程里,我們只在高級語言的層次上討論存儲結構。)

第三個概念就是對數據的運算,比如一張表格,我們需要進行查找,增加,修改,刪除記錄等工作,而怎么樣才能進行這樣的操作呢? 這也就是數據的運算,它不僅僅是加減乘除這些算術運算了,在數據結構中,這些運算常常涉及算法問題。

弄清了以上三個問題,就可以弄清數據結構這個概念。

--------------------------------------------------------------------------------

通常我們就將數據的邏輯結構簡稱為數據結構,數據的邏輯結構分兩大類:線性結構和非線性結構 (這兩個很容易理解)

數據的存儲方法有四種:順序存儲方法、鏈接存儲方法、索引存儲方法和散列存儲方法。

--------------------------------------------------------------------------------

下一個是難點問題,就是算法的描述和分析,主要是算法復雜度的分析方法及其運用。 首先了解一下幾個概念。一個是時間復雜度,一個是漸近時間復雜度。前者是某個算法的時間耗費,它是該算法所求解問題規(guī)模n的函數,而后者是指當問題規(guī)模趨向無窮大時,該算法時間復雜度的數量級。

當我們評價一個算法的時間性能時,主要標準就是算法的漸近時間復雜度,因此,在算法分析時,往往對兩者不予區(qū)分,經常是將漸近時間復雜度T(n)=O(f(n)簡稱為時間復雜度,其中的f(n)一般是算法中頻度最大的語句頻度。

此外,算法中語句的頻度不僅與問題規(guī)模有關,還與輸入實例中各元素的取值相關。但是我們總是考慮在最壞的情況下的時間復雜度。以保證算法的運行時間不會比它更長。

常見的時間復雜度,按數量級遞增排列依次為:常數階O(1)、對數階O(log2n)、線性階O(n)、線性對數階O(nlog2n)、平方階O(n^2)、立方階O(n^3)、k次方階O(n^k)、指數階O(2^n)。

時間復雜度的分析計算請看書本上的例子,然后我們通過做練習加以領會和鞏固。

[1]  [2]  

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內容不斷變化與調整,本網站提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內容為準!

軟考備考資料免費領取

去領取

!
咨詢在線老師!