程式 + 文件 = 軟體
演算法 + 資料結構 = 程式
資料結構與演算法的理論基礎離散數學中的圖論、集合論和關係論等。
資料結構課程的內容**於圖論、作業系統、編譯系統、編碼理論及檢索與排序技術等。
非數值型程式設計
中資料的
組織方式及其處理
的演算法資料結構的三個方面
:邏輯結是式資料的組織形式,與機器無關。
4種基本的邏輯結構:
集合:資料元素除了「屬於同一集合」的關係外,沒有其他關係。
線性結構:資料元素之間存在一對一的關係。如:線性表,棧,佇列
層次結構:資料元素之間存在一對多的關係。如:樹
網狀結構:資料元素之間存在若干個多對多關係。如:圖
指資料在儲存器種的存放方式,包括資料元素的表示和關係的表示。
4種基本的儲存結構:
順序儲存:將資料結構中各元素按照其邏輯順序存放於一片連續的儲存空間中。如c語言的一維陣列。
缺點:隨機訪問慢
優點:便於插入、刪除和動態增長
索引儲存:
在儲存資料的同時,建立乙個附加的索引表,即
索引儲存結構
= 資料
+ 索引表。
索引表存放各資料元素的位址
索引表的組織方式:
順序儲存:索引表占用連續空間
鏈式儲存
索引儲存:多級索引(多重索引)
例如,二級索引:將乙個大檔案的所有索引表(二級索引)的位址放在另乙個索引表(一級索引)中
此外,還有**索引等。
雜湊儲存:根據資料元素的特殊字段(稱為關鍵字
key),計算資料元素的存放位址,然後資料元素按位址存放,所得到的儲存結構為雜湊儲存結構(或
hash結構)
。基本的資料操作:增刪改查
查詢:在資料結構中尋找滿足某條件的資料元素的位置或值。
插入:在資料結構中新增新的資料元素。
刪除:刪去資料結構中指定的資料元素。
更新:改變資料結構中某個資料元素乙個或多個資料項的值。
排序:重新安排資料元素之間的邏輯順序,使之按(某個資料項的)值由小(大)到大(小)的次序排列
演算法是乙個有窮規則(或語句、指令)的有序集合。它確定了解決某一問題的乙個操作序列。對於問題的初始輸入,通過演算法有限步的執行,產生乙個或多個輸出。
簡單地說,演算法是指解決問題的由一系列具體步驟組成的方法或過程。
對特定問題求解步驟的一種描述
是一有限長的操作序列
演算法的性質:
1)有窮性
—— 演算法執行的步驟是有限的,就是說是可終止的;
2)
確定性——
每個計算步驟無二義性;
3)
可行性——
每個計算步驟能夠在有限的時間內完成;
4)
輸入——
演算法有乙個或多個輸入;
5)
輸出——
演算法有乙個或多個輸出。
初識資料結構
本人是乙個大三的學生,最近在看資料結構,也是第一次寫自己的部落格,有錯勿噴。可能在大學的學生都覺得資料結構是比較難的一門課程,也有許多難掌握的知識。但是在自己多次實踐過後就感覺沒有那麼困難,還是很容易掌握的。在學習過後我覺得資料結構的順序儲存就相當於陣列,陣列大家應該都不陌生吧。接下來我就給大家看一...
初識資料結構
資料結構 是將現實中大量而複雜的問題以特定的資料型別以及特定的儲存結構儲存到記憶體中,以及在此基礎上為實現某個功能而執行的相應操作 演算法 一 線性結構 連續儲存 陣列 離散儲存 鍊錶 線性結構常見應用 棧 資料結構中沒有堆,棧即堆疊 佇列 二 非線性結構 樹 圖三 查詢與排序 折半查詢 快排 冒泡...
初識資料結構
演算法是對解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。演算法的特性 零個或多個輸入 乙個或多個輸出 有窮性 有限步驟 確定性 每一步都有確定的含義,不會出現二義性 可行性 每一步都必須可行,即每一部都能通過執行有限次數完成 演算法設計的要求 正確性 即...