1 晌涕。什么是數(shù)據(jù)結(jié)構(gòu)狐赡?
數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲(chǔ)撞鹉、組織數(shù)據(jù)的方式。數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。通常情況下鸟雏,精心選擇的數(shù)據(jù)結(jié)構(gòu)可以帶來更高的運(yùn)行或者存儲(chǔ)效率享郊。數(shù)據(jù)結(jié)構(gòu)往往同高效的檢索算法和索引技術(shù)有關(guān)。
2孝鹊。常用的數(shù)據(jù)結(jié)構(gòu)
數(shù)組炊琉,棧,隊(duì)列又活,列表苔咪,數(shù),圖柳骄,堆团赏,散列表,
3耐薯。數(shù)據(jù)結(jié)構(gòu)的分類
數(shù)據(jù)結(jié)構(gòu)的分類簡(jiǎn)單的分成兩類舔清,線性結(jié)構(gòu)和非線性結(jié)構(gòu)。?
線性結(jié)構(gòu)特點(diǎn):
簡(jiǎn)單地說可柿,線性結(jié)構(gòu)就是表中各個(gè)結(jié)點(diǎn)具有線性關(guān)系鸠踪。如果從數(shù)據(jù)結(jié)構(gòu)的語言來描述,線性結(jié)構(gòu)應(yīng)該包括如下幾點(diǎn):?
1复斥、線性結(jié)構(gòu)是非空集营密。?
2、線性結(jié)構(gòu)有且僅有一個(gè)開始結(jié)點(diǎn)和一個(gè)終端結(jié)點(diǎn)目锭。?
3评汰、線性結(jié)構(gòu)所有結(jié)點(diǎn)都最多只有一個(gè)直接前趨結(jié)點(diǎn)和一個(gè)直接后繼結(jié)點(diǎn)。?
線性表就是典型的線性結(jié)構(gòu)痢虹,還有棧被去、隊(duì)列和串等都屬于線性結(jié)構(gòu)。
非線性結(jié)構(gòu)特點(diǎn):
簡(jiǎn)單地說奖唯,非線性結(jié)構(gòu)就是表中各個(gè)結(jié)點(diǎn)之間具有多個(gè)對(duì)應(yīng)關(guān)系惨缆。如果從數(shù)據(jù)結(jié)構(gòu)的語言來描述,非線性結(jié)構(gòu)應(yīng)該包括如下幾點(diǎn)
1丰捷、非線性結(jié)構(gòu)是非空集坯墨。?
2、非線性結(jié)構(gòu)的一個(gè)結(jié)點(diǎn)可能有多個(gè)直接前趨結(jié)點(diǎn)和多個(gè)直接后繼結(jié)點(diǎn)病往。?
在實(shí)際應(yīng)用中捣染,數(shù)組、廣義表停巷、樹結(jié)構(gòu)和圖結(jié)構(gòu)等數(shù)據(jù)結(jié)構(gòu)都屬于非線性結(jié)構(gòu)
總結(jié):
線性結(jié)構(gòu)簡(jiǎn)單的說就是一對(duì)一的關(guān)系耍攘,而非線性結(jié)構(gòu)一對(duì)多榕栏,多對(duì)多。
分布圖
4蕾各。 數(shù)據(jù)結(jié)構(gòu) --基本數(shù)據(jù)關(guān)系如圖3
5扒磁。數(shù)據(jù)結(jié)構(gòu)和算法關(guān)系圖如圖4
6 什么是算法?
算法就是解決特定問題求解步驟的描述式曲,在計(jì)算機(jī)中表現(xiàn)為指令的有限序列渗磅,并且每個(gè)指令表示一個(gè)或多個(gè)操作
算法特性:
輸入輸出,有窮性检访,確定性始鱼,可行性
算法設(shè)計(jì)要求:
正確性,可讀性脆贵,健壯性医清,時(shí)間效率高和儲(chǔ)存量低。
7 時(shí)間復(fù)雜度計(jì)算
卖氨。大O表示法
1 用常數(shù)1取代運(yùn)行時(shí)間中所有常數(shù)会烙。如 3->1 O(1)
2 在修改運(yùn)行次數(shù)函數(shù)中,只保留最高階項(xiàng)筒捺。 如?n^3+2n^2+5 -> O(n^3)
3 如果在最高價(jià)存在且不等于1柏腻,則去除這個(gè)項(xiàng)目相乘的常數(shù) 如2n^3 -> n^3
。時(shí)間復(fù)雜度術(shù)語
常數(shù)階系吭, 線性階 五嫂, 平方階, 對(duì)數(shù)階 肯尺,立方階沃缘,nlog階 ,
指數(shù)階(不考慮)O(2^n)或者O(n!) 除非是非常小的n,否則會(huì)造成噩夢(mèng)般的時(shí)間消耗. 這是一種不切實(shí)際的算法時(shí)間復(fù)雜度. 一般不考慮!
空間復(fù)雜度計(jì)算:
程序空間計(jì)算因素:
寄存本身的指令则吟,常數(shù)槐臀,變量,輸入氓仲,對(duì)數(shù)據(jù)進(jìn)行操作的輔助空間
總結(jié):在考量算法的空間復(fù)雜度,主要考慮算法執(zhí)行時(shí)所需要的輔助空間.