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