大話資料結構

2021-10-02 15:02:51 字數 3114 閱讀 3516

演算法(algorithm)

線性表(linear list)

資料(data)

所有能輸入到計算機並被電腦程式處理的符號的介質

用於輸入電子計算機進行處理,具有一定意義的數字、字母、符號和模擬量等

資料元素(data element)
又名結點或記錄

在電腦程式中通常作為乙個整體進行考慮和處理

由若干個資料項組成

資料項(data item)
資料的不可分割的最小單位

用來描述實體的某種屬性

資料物件(data object)
性質相同的資料元素的集合

只封裝資料,沒有對資料的操作

資料結構(data structure)
計算機儲存、組織資料的方式

相互之間存在一種或多種特定關係的資料元素的集合

往往同高效的檢索演算法和索引技術有關

一、邏輯結構

反映資料元素之間的邏輯關係的資料結構

1、集合結構:資料結構的元素除了屬於同乙個集合以外,沒有其他關係

2、線性結構:資料結構中的元素存在一對一的相互關係

3、樹形結構:資料結構中的元素存在一對多的相互關係

4、圖形結構:資料結構中的元素存在多對多的相互關係

二、物理結構

資料的邏輯結構在計算機儲存空間的存放形式(映像)

包括資料元素的機內表示和關係的機內表示

資料元素的機內表示(映像方法): 用二進位制位(bit)的位串(節點)表示資料元素

關係的機內表示分為順序映像和非順序映像

2、鏈式儲存結構:把資料元素存放在任意的儲存單元裡,這組儲存單元可以是連續的,也可以是不連續的。

資料型別(data type)
一組性質相同的值的集合及定義在此集合上的一些操作的總稱

抽象資料型別(abstract data type)
抽象是指抽取出事物具有的普遍性的本質

乙個數學模型以及定義在此數學模型上的一組操作

特徵:將使用與實現分離,從而實行封裝和隱藏資訊

資料

資料物件

資料元素

資料元素

資料項資料項

資料項資料項

解題方****而完整的描述,是一系列解決問題的清晰指令

能夠對一定規範的輸入,在有限時間內獲得所要求的輸出

演算法的優劣可以用空間複雜度與時間複雜度來衡量

演算法時間複雜度
在進行演算法分析時,語句總的執行次數 t(n

)t _

t(n)

​ 是關於問題規模 n

nn 的函式,進而分析 t(n

)t _

t(n)

​ 隨n的變化情況並確定t(n

)t _

t(n)

​的數量級。

演算法的時間複雜度,也就是演算法的時間量度,記作:t(n

)=0(

f(n)

)t _=0(f_)

t(n)​=

0(f(

n)​)

隨問題規模 n

nn 的増大,演算法執行時間的増長率和 f(n

)f_f(n)

​ 的増長率相同,稱作演算法的漸近時間複雜度,簡稱為時間複雜度。

f (n

)f_f(n)

​ 是問題規模 n

nn 的某個函式。

推導大o階方法步驟:

1、用常數1取代執行時間中的所有加法常數

2、在修改後的執行次數函式中,只保留最高端項

3、如果最高端項存在且不是1,則去除與這個項相乘的常數

時間複雜度別稱o(1

)o(1)

o(1)

常數階o(n

)o(n)

o(n)

線性階o(n

2)o(n^)

o(n2

)平方階

o (2

n)o(2^n)

o(2n

)指數階

o

(log⁡n

)o(\log n)

o(logn

)對數階

演算法空間複雜度

對乙個演算法在執行過程中臨時占用儲存空間大小的量度,記做 s(n

)=o(

f(n)

)s_=o( f_)

s(n)​=

o(f(

n)​)

n

nn為問題的規模,f(n

)f_f(n)

​為語句關於n所佔儲存空間的函式

零個或多個具有相同特性的資料元素的有限序列

某一元素的左側相鄰元素稱為直接前驅,位於此元素左側的所有元素都統稱為前驅元素

某一元素的右側相鄰元素稱為直接後繼,位於此元素右側的所有元素都統稱為後繼元素

鍊錶的基本概念

一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。

由一系列結點(鍊錶中每乙個元素稱為結點)組成,結點可以在執行時動態生成

節點(node):資料區和指標區

**:鍊錶的實現棧(stack)

又稱後進先出的線性表(lifo結構)

限定僅在表尾進行插入和刪除操作的線性表

佇列(queue)
又稱先進先出的線性表(fifo結構)

《大話資料結構》

函式的漸進增長 我們現在來判斷一下,兩個演算法a和b哪個更好。假設兩個演算法的輸入規模都是n,演算法a要做2n 3次操作,你可以理解為先有乙個n次的迴圈,執行完成後,再有乙個n次迴圈,最後有三次賦值或運算,共2n 3次操作。演算法b要做3n 1次操作,你覺得它們誰更快呢 準確來說,答案是不一定的 當...

《大話資料結構》

常見的時間複雜度 常見的時間複雜度如下圖所示 常用的時間複雜度所耗費的時間從小到大依次是 o 1 o logn o n o nlogn o n o n 三次方 o 2 n次方 o n!o n n次方 我們前面已經談到了 o 1 常數階 o logn 對數階 o n 線性階 o n 平方階等,至於o ...

《大話資料結構》

線性表 線性表,從某種就能感覺到,是具有像線一樣的性質的表。在廣場上,有很多人分散在各處,當中有些是小朋友,可也有很多大人,甚至還有不少寵物,這些小朋友的資料對整個廣場人群來說,不能算是線性表的結果。但像剛才提到的那樣,乙個班級的小朋友,乙個跟著乙個排著隊,有乙個打頭,有乙個收尾,當中的小朋友,每乙...