資料結構和演算法,資料結構演算法
什麼是資料結構?
資料結構分為資料和結構。數字、字元、圖形、聲音等都是資料。結構分邏輯結構和儲存結構。邏輯結構就是資料間的抽象化關係。儲存結構就是資料在電腦儲存空間(記憶體、磁碟)的儲存方式。資料結構研究的就是資料如何在電腦記憶體儲的問題。資料結構包括數組、棧、二叉樹、雜湊表等等。
什麼是演算法?
演算法就是電腦內對給定問題的處理過程,說白了就是對資料結構中的資料進行各種處理,比如對資料排序、尋找等。
資料結構和演算法的關係?
電腦處理資料的過程:資料的輸入—->電腦的處理—>資料輸出
對於未經處理資料如何進行組織,如何在電腦記憶體儲,便於節省空間的和電腦處理;如何選擇合適的演算法提高解決問題的效率和可靠性,都是很重要的,不能孤立討論。
演算法只有在合適的資料結構上才能發揮作用,資料結構的不同,會影響演算法的選擇和效率。
有科學家這樣總結:演算法+資料結構=程式
資料結構和演算法有什麼用?
前面概念有一定瞭解後,瞭解一下應用情境。
現實資料存放區:
將現實世界的電腦外部的物理實體資料存放區在電腦裡。比如一條人事檔案記錄一個真實人的資訊。
程式員的工具:
用鏈表、棧、隊列等結構作為工具來簡化另一些操作。
對現實世界進行建模:
用資料結構對現實世界進行構造模型。像圖,用它表示城市之間的航線、電路的串連等。
大致瞭解資料結構的特性:
| 資料結構 |
優點 |
缺點 |
| 數組 |
插入快,知道下標可快速存取 |
尋找慢,刪除慢,大小固定 |
| 有序數組 |
比無序數組尋找快 |
插入、刪除慢,大小固定 |
| 棧 |
後進先出的方式存取 |
存取其他項很慢 |
| 隊列 |
先進先出的方式存取 |
存取其他項很慢 |
| 鏈表 |
插入、刪除快 |
尋找慢 |
| 二叉樹 |
插入、刪除、尋找都快(如果樹保持平衡) |
刪除演算法複雜 |
| 紅-黑樹 |
插入、刪除、尋找都快(樹總是平衡的) |
演算法複雜 |
| 2-3-4樹 |
插入、刪除、尋找都快(樹總是平衡的)類似的樹對磁碟儲存有用 |
演算法複雜 |
| 雜湊表 |
如果關鍵字已知,存取極快,插入快 |
刪除慢,關鍵字未知,儲存慢,對磁碟空間利用不充分 |
| 堆 |
插入、刪除快,對最大資料項目的存取很快 |
對其他資料項目存取慢 |
| 圖 |
對現實世界建模 |
有些演算法慢且複雜 |
以上除數組外,其他稱為抽象資料結構(ADT)。