資料結構課上筆記2

2021-08-28 02:58:15 字數 1210 閱讀 4342

今天繼續說明了一些基本概念,講解了時間空間複雜度。

(對於概念的掌握也很重要)

元素之間的關係在計算機中有兩種表示方法:順序映像和非順序映像,由此得到兩種不同的儲存結構:

順序儲存結構和鏈式儲存結構。

順序:根據元素在儲存器中的相對位置表示關係

鏈式:借助指標表示關係

資料型別:是乙個值的集合和定義在這個值集上的一組操作的總稱。

抽象資料型別:是指乙個數學模型以及定義在該模型上的一組操作。(僅僅取決於邏輯特性,與其在計算機內部如何表示和實現無關)

定義抽象資料型別的一種格式:

adt nameadt name

演算法:是對特定問題求解步驟的一種描述。

演算法五個特性:

有窮性:有窮的時間內完成,或者可以說是可接受的時間完成

確定性:對於相同的輸入只能得到相同的輸出

可行性:描述的操作都可以執行基本操作有限次來實現

輸入:零個或多個輸入。取自於某個特定物件的集合

輸出:乙個或多個輸出

設計要求:正確性、可讀性、健壯性、效率與低儲存量需求。

執行頻度概念:是指通過統計演算法的每一條指令的執行次數得到的。

執行頻度=演算法中每一條語句執行次數的和

一般認定每條語句執行一次所需時間為單位時間(常數時間)o(1)

幾個小知識和小問題:

1)迴圈執行次數n+1次,不是n次。第一次執行i=1和判斷i<=n以後執行n次判斷和i++。所以該語句執行了n+1次。在他的控制下,迴圈體執行了n次。

2)四個並列程式段:分別為o(n),o(n^2),o(n^3),o(n*logn),整個程式時間複雜度為o(n^3),因為隨著n的增長,其它項都會忽略

3)演算法分析的目的是分析演算法的效率以求改進

4)對演算法分析的前提是演算法必須正確

5)原地工作指的不是不需要空間,而是空間複雜度o(1),可能會需要有限幾個變數。

實現統一功能兩種演算法:時間o(2^n),o(n^10),假設計算機可以執行10^7秒,每秒可執行基本操作10^5次,問可解問題規模各為多少?選哪個更為合適?

計算機一共可執行10^7*10^5=10^12次

第一種:n=log2,(10^12)=12log(2,10)

第二種:n=(10^12)^0.1

顯然1更適用。

雖然一般情況多項式演算法比指數階更優

資料結構課上筆記6

本節課介紹了單鏈表的操作實現細節,介紹了靜態鍊錶。鍊錶帶頭的作用 對鍊錶進行操作時,可以對空表 非空表的情況以及 對首元結點進行統一處理,程式設計更方便。下面給出帶頭的單鏈表實現思路 按下標查詢 判斷非法輸入,當 1 p l next j 1 while p j i return 按值查詢 p l1...

資料結構課上筆記12

一般二叉樹 將其每個結點與完 全二叉樹上的結點相對照,儲存在一 維陣列的相應分量中。最壞情況 樹退化為線性後 深度為 k 的且只 有 k 個結點的右單支樹需要 長度為2 k 1 的一維陣列。lchild和rchild都是指向相同結構的指標 在 n 個結點的二叉鍊錶中有 n 1 個空指標域。typed...

資料結構課上筆記14

圖是一種 資料元素間存在多對多關係的資料結構 加上一組基本操作構成的抽象資料型別。圖 graph 是一種複雜的非線性資料結構,由頂點集合及頂點間的關係 也稱弧或邊 集合組成。可以表示為 g v,vr 其中 v 是頂點的有窮非空集合 vr 是頂點之間 關係的有窮集合,也叫做弧或邊集合。弧是頂點的有序對...