這份清單,既是一份有助于對這些題目做深入研究的快速指南和參考,也算是計算機(jī)科學(xué)課程中不能忘記的基礎(chǔ)知識總結(jié),因此并不可能全面覆蓋所有內(nèi)容。
數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)
定義知識要點索引最優(yōu);不利于查找、插入和刪除(除非在數(shù)組最末進(jìn)行) 最基礎(chǔ)的是線性數(shù)組或一維數(shù)組
數(shù)組長度固定,意味著聲明數(shù)組時應(yīng)指明長度
動態(tài)數(shù)組與一維數(shù)組類似,但為額外添加的元素預(yù)留了空間
如果動態(tài)數(shù)組已滿,則把每一元素復(fù)制到更大的數(shù)組中
類似網(wǎng)格或嵌套數(shù)組,二維數(shù)組有 x 和 y 索引
時間復(fù)雜度O(1)索引:一維數(shù)組:O(1),動態(tài)數(shù)組:O(1) O(n)查找:一維數(shù)組:O(n),動態(tài)數(shù)組:O(n) O(log n)最優(yōu)查找:一維數(shù)組:O(log n),動態(tài)數(shù)組:O(log n) O(n)插入:一維數(shù)組:n/a,動態(tài)數(shù)組:O(n)
定義要點為優(yōu)化插入和刪除而設(shè)計,但不利于索引和查找 雙向鏈表包含指向前一結(jié)點的指針 循環(huán)鏈表是一種終端結(jié)點指針域指向頭結(jié)點的簡單鏈表 堆棧通常由鏈表實現(xiàn),不過也可以利用數(shù)組實現(xiàn)
堆棧是“后進(jìn)先出”(LIFO)的數(shù)據(jù)結(jié)構(gòu)
同樣地,隊列也可以通過鏈表或數(shù)組實現(xiàn)
隊列是“先進(jìn)先出”(FIFO)的數(shù)據(jù)結(jié)構(gòu)
時間復(fù)雜度
定義要點時間復(fù)雜度O(1)索引:哈希表:O(1) O(1)查找:哈希表:O(1) O(1)插入:哈希表:O(1)

定義要點時間復(fù)雜度索引:二叉查找樹:O(log n) 查找:二叉查找樹:O(log n) 插入:二叉查找樹:O(log n)
定義要點時間復(fù)雜度
定義要點時間復(fù)雜度廣度優(yōu)先搜索 VS. 深度優(yōu)先搜索細(xì)微的區(qū)別由于廣度優(yōu)先搜索(BFS)使用隊列來存儲結(jié)點的信息和它的子結(jié)點,所以需要用到的內(nèi)存可能超過當(dāng)前計算機(jī)可提供的內(nèi)存(不過其實你不必?fù)?dān)心這一點) 如果要在某一深度很大的樹中使用深度優(yōu)先搜索(DFS),其實在搜索中大可不必走完全部深度??稍?xkcd 上查看更多相關(guān)信息。 廣度優(yōu)先搜索趨于一種循環(huán)算法。 深度優(yōu)先搜索趨于一種遞歸算法
定義一種基于比較的排序算法 重復(fù)上述過程,直到歸并成只有一個數(shù)據(jù)集 一旦所有的數(shù)對都完成排序,則開始比較最左兩個數(shù)對中的最左元素,形成一個含有四個數(shù)的有序集合,其中最小數(shù)在最左邊,最大數(shù)在最右邊 依次比較每個數(shù)字,將最小的數(shù)移動到每對數(shù)的左邊 將整個數(shù)據(jù)集劃分成至多有兩個數(shù)的分組
要點時間復(fù)雜度O(n)最好的情況:歸并排序:O(n) 平均情況:歸并排序:O(n log n) 最壞的情況:歸并排序:O(n log n)
定義
要點時間復(fù)雜度
定義要點時間復(fù)雜度O(n)最好的情況:歸并排序:O(n) O(n2)平均情況:歸并排序: O(n2) O(n2)最壞的情況:歸并排序: O(n2)
歸并排序 VS. 快速排序
本文來源網(wǎng)絡(luò),歡迎分享閱讀!
黑馬程序員基礎(chǔ)班火熱報名中
0元幫你夯實編程基礎(chǔ),助你輕松入學(xué)黑馬程序員。
|