先了解一下什么叫數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu):
數(shù)據(jù)的組織方式,著重于數(shù)據(jù)之間的關(guān)系浪讳,研究以下三部分:
- 數(shù)據(jù)存儲(chǔ)結(jié)構(gòu) * 數(shù)據(jù)邏輯結(jié)構(gòu) * 算法數(shù)據(jù)
(也就是數(shù)據(jù)對(duì)象(數(shù)據(jù)元素–關(guān)系–數(shù)據(jù)結(jié)構(gòu)))
數(shù)據(jù)結(jié)構(gòu)三個(gè)部分組成
01虹曙、存儲(chǔ)結(jié)構(gòu)
{
- 順序存儲(chǔ):相鄰的邏輯結(jié)點(diǎn)存儲(chǔ)在相鄰的物理存儲(chǔ)單元里氓癌,結(jié)點(diǎn)間的邏輯關(guān)系由存儲(chǔ)單元的鄰接關(guān)系來體現(xiàn)
- 鏈?zhǔn)酱鎯?chǔ):不要求相鄰存儲(chǔ)贺拣,結(jié)點(diǎn)間的邏輯關(guān)系是由附加的指針表示
- 索引存儲(chǔ):建立附加的索引標(biāo)識(shí)來表示結(jié)點(diǎn)的地址蓖谢。
- 散列(哈希)存儲(chǔ):根據(jù)結(jié)點(diǎn)的關(guān)鍵碼直接計(jì)算出該結(jié)點(diǎn)的存儲(chǔ)地址。
}
02譬涡、邏輯結(jié)構(gòu)
{ - 線性結(jié)構(gòu):{ 線性表,棧啥辨,隊(duì)列涡匀,串
- 非線性結(jié)構(gòu):{ 樹形結(jié)構(gòu),圖形結(jié)構(gòu)溉知,集合結(jié)構(gòu)
}
03陨瘩、算法
{ - 特性:有窮性,確定性级乍,可行性舌劳,輸入,輸出
- 時(shí)間復(fù)雜度:
/*
* 分析下面程序段的時(shí)間復(fù)雜度
*/
(1) int i,sum = 0; (1次)
(2) for (i=0;i<n;i++) (n+1次)
(3) sum=sum+i; (n次)
(4) return sum; (1次)
T(n)=2n+3,且T(n)是n數(shù)量級(jí)的
時(shí)間復(fù)雜度:(漸進(jìn)時(shí)間復(fù)雜度玫荣, 只取結(jié)果的最高冪):用大O[字母的大寫O]表示
T(n)=2n+3~= n 則時(shí)間復(fù)雜度為O(n)
如:T(n)=3n2+2n+1000=O(n2)
記憶:各種不同數(shù)量級(jí)對(duì)應(yīng)的值存在著如下關(guān)系:
O(1) < O(logn) < O(n) < O(n*logn) < O(n2) < O(n3) < O(2n) < O(n!)
}