/**
* @author administrator
* ds--data structure--資料結構
* 資料之間是有聯絡的(key-value),資料之間是有結構的(tree、binary-tree)、
* 資料之間是可以進行運算的(search、delete、update、insert)
* 基本概念6個:
* 資料--data--能被計算機處理的符號的集合
* 資料元素--data element--資料中乙個乙個的個體
* 資料項--data item--將資料元素進行進一步劃分的單位
* 資料物件--data object--具有相同特性的資料元素的集合
* 資料結構--data structure--帶有結構的資料元素的集合
* ds=(d,r)
* 資料結構分類--邏輯結構(演算法的設計依賴邏輯結構)、物理結構(演算法的實現依賴物理結構)
* 資料型別--data type--乙個值的集合和定義在乙個值上操作的總稱
* 常見的9種資料結構:
* 線性表--n個資料元素的有限序列
* linear_list=(d,r)
* d中,l=(a1,a2,a3,...,a i-1,ai,a i+1,...,an);
* r中,a i-1為ai的直接前驅元素,a i+1為ai的直接後繼元素
* 10個運算:initiate(l)、length(l)、clear(l)、empty(l)
* prior(l,elem)、next(l,elem)、locate(l,x)
* insert(l,i,b)、delete(l,i)、get(l,i)
* 儲存結構--
* 順序儲存--用一組位址連續的儲存空間依次存放線性表的中元素 loc(ai)=loc(a1)+(i-1)*k
* 鏈式儲存--用一組任意的儲存空間(不要求位址連續)存放線性表中的元素 每個節點由資料域和指標域組成
* 串--有限個字元構成的字串行
* 棧--插入和刪除操作限定在表尾的線性表(先入後出 filo)
* 佇列--限定在一端插入,另一端刪除的線性表(先入先出 fifo)
* 陣列--陣列和廣義表都是線性表的擴充套件,即線性表的資料元素本身也是一種資料結構
* 二維陣列中,每乙個元素都是列向量的線性表或者是每個元素都是行向量的線性表
* 廣義表--資料元素可以是表的線性表
* 樹--至少有乙個資料元素存在不止乙個直接前驅或者後繼元素,存在唯一乙個稱為根的資料元素
* 結點的度--每個結點擁有的子樹的個數
* 樹的度--樹中所有結點的度的最大值
* 樹的深度--樹的層次
* 二叉樹--結點數為0或者每個結點最多只有左右兩顆子樹的樹
* 結論:第i層最多擁有2 i-1個結點 可進行論證
* 深度為k的二叉樹最多只有2 k -1個結點 可用等比數列求和進行論證
* 度為0的結點數比度為2的結點數多1 可用結點數和孩子數進行推理
* 滿二叉樹--除去最後一層,其它層次上的結點數都達到最大值 2 i-1
* 完全二叉樹--每個節點的編號與相同深度的滿二叉樹--對應,即左子樹的深度-右子樹的深度等於0或者1
* 圖--graph=(v,r)
* 有向圖--g=(v,)--頂點和弧
* 無向圖--g=(v,)--頂點和邊
* 深度優先--depth-first-search--將訪問的頂點中未訪問的頂點當做當前頂點,直到所有鄰接點都已訪問,然後回退,持續之前操作
* 廣度優先--breadth-first-search--將訪問的頂點中所有未訪問的頂點都訪問,然後依次將訪問過的鄰接點作為當前結點進行訪問,持續如此
* * aa--algorithm analysis--演算法分析
* algorithm--演算法--對特定問題的解決步驟的描述,是有限的指令集合
* 演算法3特徵:
* 有窮性--演算法在有限步驟內結束
* 確定性--演算法的每一步的含義都是確定的
* 可行性--演算法的每一步都是可執行的
* 程式是用某種特定的程式語言對演算法的具體實現
* 演算法分析的2主要衡量標準:
* 時間複雜度--演算法執行所花費的時間
* frequency count--語句頻度--語句可能重複執行的最大次數
* time complexity--
* 演算法中所有語句的語句頻度t(n)
* f(n)為當n趨於無窮大時,t(n)的同階無窮大
* f(n)即為t(n)中去除首項係數和低階項,只考慮最高端次,因為同階無窮大為 lim t(n)/f(n)=c,即求導
* t(n)=o(f(n))
* 常見的9種時間複雜度:
* 常數階o(1)《對數階o(log2 n)《線性階o(n)《線性對數階o(nlog2 n)《平方階o(n2)《立方階o(n3)記錄學習的筆記
資料結構基本概念,演算法與演算法分析
一.演算法 1.概念 演算法是對特定問題求解步驟的一種描述。是指令的有限序列,其中每條指令表示乙個或多個操作 2.性質 3.目標 正確性,可讀性,健壯性,高效率 4.演算法的描述 自然語言,程式語言,偽 5.演算法分析 1 時間複雜度t n 執行演算法所需要的計算工作量,用演算法所執行的基本運算次數...
資料結構與演算法概念
資料結構是個抽象的概念,所以並沒有官方的定義,資料結構 演算法於應用 中是這樣來定義的 資料結構是資料物件,以及存在於該對像的例項以及組成例項的資料元素間的各種聯絡,這種聯絡可以通過定義相關函式來給出。我所理解的資料結構是資料元素之間的關係所構成的某種集合。樹和圖,就是很好的例子,他們是根據資料元素...
資料結構與演算法 概念
計算機從解決數值計算問題到解決生活中的問題 現實生活中的問題涉及不同個體間的複雜聯絡 需要在電腦程式中描述生活中個體間的聯絡 資料結構主要研究非數值計算程式問題中的操作物件以及它們之間的關係而不是研究複雜的演算法 基本概念 資料 程式的操作物件,用於描述客觀事物 資料的特點 可以輸入到計算機 可以被...