資料結構00

2021-10-04 15:19:14 字數 2609 閱讀 8566

資料結構分為邏輯結構跟物理結構,邏輯結構依賴於物理結構

邏輯結構:集合結構 線性結構 樹形結構 圖形結構

程式的靈魂(演算法)

演算法的5大基本特性:輸入 輸出 有窮性 確定性 可行性

其他特性:價效比(效率)

事後統計法:比較執行時間

問題:嚴重依賴硬體和執行時環境因素,編寫相應程式

事前分析估算法

影響演算法效率的主要因素

1)選擇的策略和方法 //這個課程主要遵循這兩個

分析執行次數:

2)問題的輸入規模(例如排序演算法,排序1個跟排序10000個)

3)編譯器所產生的**

4)計算機執行速度

演算法的效率只關注最高端項就可以了–》定性描述,符合定向 o(n)

定性描述-》演算法複雜度分為時間複雜度和空間複雜度

資料結構課程重點關注的是演算法的效率問題,即集中於時間複雜度

大o(operation操作)表示法

運算元量的估算可以作為時間複雜度的估算

=>首先關注運算元量的最高次項

o(1)

o(n)

o(n2)

o(n3)

線性階的時間複雜度:o

(n)對應的**

對數接的時間複雜度 o

(logn)

int i=

1while

(i 平方階 o(n2)

for(i =

0;i 平方階 o(n2) 由於是(n,n-

1,n-2,

...,

1,0)for

(i=0

;ifor(i=

0;i(n)}

=》總的是 o

(n3)

演算法效率的度量

常用的時間複雜度

效率依次遞減

o(1) > o(n) > o(nlogn) > o(n^2) > o(n^3)「工程開發最次的選擇」 > o(2^n) > o(n ! )「後面這些實踐開發是不會採用的」

常數階 > 對數階 > 線性階 》 nlogn 接 平方階 立方階 指數階 階乘階

考慮的是最壞的複雜度

空間複雜度s(空間:記憶體空間) (space complexity)

s(n)=s(f(n)) // n為演算法的問題規模

資料元素 組成資料的基本單位 人類中 資料元素—人

資料項:乙個資料元素由若干個資料項組成 資料項----眼耳口鼻子

資料物件: 性質相同的資料元素的集合 人都有姓名、生日、性別等相同資料項

資料結構 : 資料元素間關係

邏輯結構 物理結構

邏輯結構:集合結構(平等,無關係) 線性結構 (1對1) 樹型結構(1對多) 圖形結構(多對多)

物理結構:順序儲存結構 鏈式儲存結構

順序儲存結構:分配聯絡位址,第乙個位置很重要

c語言資料型別

原子型別:整形、字元型、浮點型

結果型別:整形陣列

抽象資料型別(adt)

線性表:0個或多個資料元素的線性表

陣列的靜態鍊錶,怪怪的

順序儲存結構—隨機儲存特點,查詢o(1) ,但是插入o(n)

單鏈表 :查詢第乙個結點o(1),最後乙個點o(n),插入o(1)

單迴圈鍊錶:引入尾指標,查詢第乙個結點o(1),查詢最後乙個點o(1), 查詢上乙個結點o(n),插入o(1)

雙向鍊錶: 查詢上乙個結點o(1),插入和刪除改變兩個指標變數,空間換時間 :順序 先處理插入點s的前驅和後繼 ,在處理後結點的前驅,最後處理前結點的後繼

棧(stack):限定僅在表尾(棧頂)進行插入和刪除的線性表壓棧 出棧,先進後出

從待求解的問題出發,一直分解到已經已知答案的最小問題為止,然後再逐級返回,從而得到大問題的解(乙個非常形象的例子就是分類回歸樹 classification and regression tree,從root出發,先將root分解為

而迭代則是從已知值出發,通過遞推式,不斷更新變數新值,一直到能夠解決要求的問題為止

=斐波那契數列的求解*****==

遞迴實際上不斷地深層呼叫函式,直到函式有返回才會逐層的返回,因此,遞迴涉及到執行時的堆疊開銷(引數必須壓入堆疊儲存,直到該層函式呼叫返回為止),所以有可能導致堆疊溢位的錯誤;但是遞迴程式設計所體現的思想正是人們追求簡潔、將問題交給計算機,以及將大問題分解為相同小問題從而解決大問題的動機。

迭代大部分時候需要人為的對問題進行剖析,將問題轉變為一次次的迭代來逼近答案。迭代不像遞迴一樣對堆疊有一定的要求,另外一旦問題剖析完畢,就可以很容易的通過迴圈加以實現。迭代的效率高,但卻不太容易理解,當遇到資料結構的設計時,比如圖『表、二叉樹、網格等問題時,使用就比較困難,

遞迴演算法從思想上更加貼近人們處理問題的思路,而且所處的思想層級算是高層(神),而迭代則更加偏向於底層(人),所以從執行效率上來講,底層(迭代)往往比高層(遞迴)來的高,但高層(遞迴)卻能提供更加抽象的服務,更加的簡潔

佇列(queue):只允許在隊尾進入插入操作,而在隊頭進行刪除操作的線性表。一段進,一端出,先進先出(fifo),允許插入的一端叫隊尾,允許刪除的一端叫隊頭

eg:鍵盤輸入與顯示

串(string):零個或多個字元組成的有限序列,也叫字串

順序迴圈佇列: 佇列的頭尾相接的順序迴圈結構

資料結構與演算法開篇 00

1.有窮性 乙個演算法的操作步驟是有限的,不能是無限的 2.確定性 演算法中的每乙個步驟都要確定的詞,不能含糊不清 3.輸入 演算法具有0個或多個輸入 4.輸出 演算法至少有1個或多個輸出 5.可行性 演算法的每一步都是可行的,也就是說每一步都能夠執行有限的次數完成1.正確性 演算法的執行結果應當滿...

《資料結構》003樹 00B

方法 1 查詢根節點,若根節點為空,返回null 2 根據根節點和x進行比較 x 根節點 遍歷左子樹 x 根節點 遍歷右子樹 相等 搜尋完成,即為根節點 position find elementtype x,bintree bst 將上面的方法進行改進 position interfind ele...

一堆模板(醜陋0 0) 資料結構

1 1.主席樹模板練習 hdu2665 kth number 23 include4 include5 include6 include7 include8 include9 include10 using namespace std 11struct treet 2000000 14 int to...