資料結構和演算法簡介
本篇目前為 Wiki 頁面的簡易整理,暫時還無法全部用我的方式表達; 由於是來自 Wiki 的資料因此也會遵循相同的分享規範。 -- 資料結構 (Data Structure) Bruce: 資料結構是代表儲存資料的特定方法;不同的儲存排列方法會使得新增刪除修正查詢資料的速度有所改變,對於特定的狀況可以設計使用不同的資料結構來加快達成目的的執行速度。目前常用程式語言中的陣列與矩陣等最終端應該都會是使用某種資料結構來實作以實現高效率,如 C++ 中 STL 的 container 可能是使用紅黑樹之類的。 接著我將列舉數種資料結構作為範例。 Wiki: 在 電腦科學 或 資訊科學 中, 資料結構 ( 英語 : data structure )是電腦中儲存、組織 資料 的方式。通常情況下,精心選擇的資料結構可以帶來 最優 效率 的 演算法 。 一般而言,資料結構的選擇首先會從 抽象 資料類型 的選擇開始。一個設計良好的資料結構,應該在 盡 可能使用較少的時間與空間資源的前提下,為各種臨界狀態下的執行提供支援。資料結構可通過 編程 語言 所提供的 資料類型 、 參照 及其他操作加以實作。 不同種類的資料結構適合於不同種類的應用,而部分甚至專門用於特定的作業任務。例如,當電腦網路依賴於 路由表 運作時, B 樹 高度適用於資料庫的封裝。 在許多類型的 程式 設計中,選擇適當的資料結構是一個主要的考慮因素。許多大型系統的構造經驗表明,封裝的困難程度與最終成果的品質與表現,都取決於是否選擇了最優的資料結構。在許多時候,確定了資料結構後便能很容易地得到 演算法 。而有些時候,思路則會顛倒過來:例如當某個關鍵作業需要特定資料結構下的演算法時,會反過來確定其所使用的資料結構。然而,不管是哪種情況,資料結構的選擇都是至關重要的。 系統構造的關鍵因素是資料結構而非演算法的這一深入理解,導致了多種形式化的設計方法與 程式語言 的出現。絕大多數的語言都帶有某種程度上的 模組化 思想,通過將資料結構的具體實作封裝隱藏於受限介面之後的方法,來讓不同的應用程式能夠安全地重用這些資料結構。 C++ 、 Java 、 Python 等 物件導向 的程式語言可使用 類 來完成...