(一)定義:
算法是特定問題求解步驟的描述,是在計(jì)算機(jī)中表現(xiàn)為指令的有限序列。算法是獨(dú)立語言而存在的一種解決問題的方法和思想。
注意:
1.對(duì)于算法而言,語言并不重要,重要的是思想。
2.但是,對(duì)于程序開發(fā)而言,語言非常重要。
(二)特點(diǎn):
輸入:算法具有0個(gè)或多個(gè)輸入。
輸出:算法至少有1個(gè)或多個(gè)輸出。
有窮性:算法在有限的步驟之后會(huì)自動(dòng)結(jié)束而不會(huì)無限循環(huán)。
確定性:算法中的每一步都有確定的含義,不會(huì)出現(xiàn)二義性。
可行性:算法的每一步都是可行的。
(一)定義:
數(shù)據(jù)結(jié)構(gòu)是指相互之間存在著一種或多種關(guān)系的數(shù)據(jù)元素的集合和該集合中數(shù)據(jù)元素之間的關(guān)系組成,分為邏輯數(shù)據(jù)結(jié)構(gòu)和存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)兩種。
注意:
1.數(shù)據(jù)元素之間不是獨(dú)立的,存在特定的關(guān)系,這些關(guān)系即結(jié)構(gòu)。
2.數(shù)據(jù)結(jié)構(gòu)指數(shù)據(jù)對(duì)象中數(shù)據(jù)元素之間的關(guān)系。
(二)數(shù)據(jù)元素之間的邏輯關(guān)系
集合結(jié)構(gòu):數(shù)據(jù)元素之間沒有特別的關(guān)系,僅同屬相同集合
線性結(jié)構(gòu):數(shù)據(jù)元素之間是一對(duì)一的關(guān)系
樹形結(jié)構(gòu):數(shù)據(jù)元素之間存在一對(duì)多的層次關(guān)系
圖形結(jié)構(gòu):數(shù)據(jù)元素之間是多對(duì)多的關(guān)系
(一)兩者關(guān)系:
1.數(shù)據(jù)結(jié)構(gòu)是底層,算法高層;
2.數(shù)據(jù)結(jié)構(gòu)為算法提供服務(wù);
3.算法圍繞數(shù)據(jù)結(jié)構(gòu)操作;
注意:
(1)數(shù)據(jù)結(jié)構(gòu)只是靜態(tài)的描述了數(shù)據(jù)元素之間的關(guān)系;
(2)高效的程序需要在數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上設(shè)計(jì)和選擇算法。
(二)程序 = 數(shù)據(jù)結(jié)構(gòu) + 算法
數(shù)據(jù)結(jié)構(gòu)是算法實(shí)現(xiàn)的基礎(chǔ),算法總是要依賴于某種數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)的。往往是在發(fā)展一種算法的時(shí)候,構(gòu)建了適合于這種算法的數(shù)據(jù)結(jié)構(gòu)。一種數(shù)據(jù)結(jié)構(gòu)如果脫離了算法,那還有什么用呢?實(shí)際上也不存在一本書單純的講數(shù)據(jù)結(jié)構(gòu),或者單純的講算法。
當(dāng)然兩者也是有一定區(qū)別的,算法更加地抽象一些,側(cè)重于對(duì)問題的建模,而數(shù)據(jù)結(jié)構(gòu)則是具體實(shí)現(xiàn)方面的問題了,兩者是相輔相成的。
因此,數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)間的有機(jī)關(guān)系,算法是對(duì)數(shù)據(jù)的操作步驟。認(rèn)為這兩個(gè)概念間的邏輯關(guān)系貫穿了整個(gè)程序世界,首先二者表現(xiàn)為不可分割的關(guān)系。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.