更新時(shí)間:2021-06-22 12:12:25 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1038次
什么是數(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)可以帶來(lái)更高的運(yùn)行或者存儲(chǔ)效果。數(shù)據(jù)結(jié)構(gòu)往往同高效的檢索算法和索引技術(shù)有關(guān)。數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)和基本算法,最基本的三種基本結(jié)構(gòu):線性結(jié)構(gòu)、樹型結(jié)構(gòu)和圖形結(jié)構(gòu)。常用的算法:查找、排序。
那為什么我們要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)呢?因?yàn)橐獙W(xué)好編程,數(shù)據(jù)結(jié)構(gòu)是必須學(xué)好的,不僅僅是結(jié)構(gòu),每一種結(jié)構(gòu)里面會(huì)有幾種算法,這些算法包涵了不同的思想。數(shù)據(jù)結(jié)構(gòu)貫穿程序設(shè)計(jì)的始終。擁有數(shù)據(jù)結(jié)構(gòu)與算法的功底,能使我們更快地編寫出更高效率的程序。“算法+數(shù)據(jù)結(jié)構(gòu)=程序”。
1.定義:數(shù)據(jù)結(jié)構(gòu)是指相互之間存在著一種或者多種關(guān)系的數(shù)據(jù)元素的集合和該集合中數(shù)據(jù)元素之間的關(guān)系組成,分為邏輯數(shù) 據(jù)結(jié)構(gòu)和存儲(chǔ)(物理)數(shù)據(jù)結(jié)構(gòu)兩種。
2.數(shù)據(jù)包括:數(shù)據(jù)(原材料)、數(shù)據(jù)元素(基本單位)、數(shù)據(jù)項(xiàng)(最小單位)、數(shù)據(jù)對(duì)象(子集)、數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)的組織形式即集合)、 數(shù)據(jù)類型(按照數(shù)據(jù)值的不同進(jìn)行劃分的可操作性)
注意:
(1)數(shù)據(jù)元素之間不是獨(dú)立的,而是存在特定的關(guān)系的,這下關(guān)系為結(jié)構(gòu)。
(2)數(shù)據(jù)結(jié)構(gòu)指數(shù)據(jù)對(duì)象中數(shù)據(jù)元素之間的關(guān)系。
3.數(shù)據(jù)的邏輯結(jié)構(gòu)
定義:邏輯結(jié)構(gòu)是指數(shù)據(jù)對(duì)象中數(shù)據(jù)元素之間的相互關(guān)系。
數(shù)據(jù)的邏輯結(jié)構(gòu)可以分為兩種:線性結(jié)構(gòu)和非線性結(jié)構(gòu)(集合、樹、網(wǎng))。
線性結(jié)構(gòu)里的元素是一對(duì)一的關(guān)系,常見的線性結(jié)構(gòu)是線性表,典型的線性表有:順序表、鏈表、棧(知順序棧、鏈棧)和隊(duì)列(順序隊(duì)列、鏈隊(duì)列)。
非線性結(jié)構(gòu)里的元素是一對(duì)多或多對(duì)多的關(guān)系,常見的非線性結(jié)構(gòu)包括:樹(二叉樹)、圖(網(wǎng))等。
也可以細(xì)分為以下四種基本類型:
集合結(jié)構(gòu):集合結(jié)構(gòu)里面的元素關(guān)系是孤立的,僅同屬于相同的集合。
線性結(jié)構(gòu):數(shù)據(jù)元素之間存在著一對(duì)一的線性關(guān)系。除第一個(gè)和最后一個(gè)元素外,每個(gè)元素只有一個(gè)前驅(qū)和一個(gè)后繼數(shù)據(jù)元素。
樹結(jié)構(gòu):數(shù)據(jù)元素之間存在這一對(duì)多的層次關(guān)系。除根結(jié)點(diǎn)外,每個(gè)數(shù)據(jù)元素只有一個(gè)前驅(qū)數(shù)據(jù)元素,可有0個(gè)或若干個(gè)后繼數(shù) 據(jù)元素。
圖結(jié)構(gòu):數(shù)據(jù)元素之間存在著多對(duì)多的任意關(guān)系。每個(gè)元素可有0個(gè)或若干個(gè)前驅(qū)數(shù)據(jù)元素和0個(gè)或若干個(gè)后繼數(shù)據(jù)元素。
4.數(shù)據(jù)的存儲(chǔ)(物理)結(jié)構(gòu)
定義:物理結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的存儲(chǔ)形式。存儲(chǔ)結(jié)構(gòu)有兩種:
順序存儲(chǔ)結(jié)構(gòu):是把數(shù)據(jù)元素存放在地址連續(xù)的存儲(chǔ)單元里,其數(shù)據(jù)間的邏輯關(guān)系和物理關(guān)系是一致的。
鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu):是把數(shù)據(jù)元素存放在任意的存儲(chǔ)單元里,這組存儲(chǔ)單元可以是連續(xù)的,也可以是不連續(xù)的。
1.定義:算法是對(duì)特定問(wèn)題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示一個(gè)或多個(gè)操作。
2.算法的五個(gè)重要特性:
(1)有窮性:一個(gè)算法包含有限個(gè)操作步驟。一個(gè)算法在執(zhí)行若干個(gè)步驟之后應(yīng)該能夠結(jié)束,而且每一步驟都在有限時(shí)間內(nèi)完成。
(2)確定性:算法中的每一步驟必須有確切的含義,不能產(chǎn)生二義性。
(3)可行性:算法中的每一步驟都應(yīng)該是能有效地執(zhí)行,并得到確定的結(jié)果。
(4)輸入:一個(gè)算法可以有零個(gè)或多個(gè)輸入。
(5)輸出:一個(gè)算法有一個(gè)或多個(gè)輸出。沒有輸出的算法是毫無(wú)意義的。
3.算法設(shè)計(jì)的要求:
算法設(shè)計(jì)的好壞關(guān)乎程序執(zhí)行效率,算法的設(shè)計(jì)必須滿足下列四個(gè)要求:
(1)正確性:正確性是指算法達(dá)到了測(cè)試要求。
(3)可讀性:指人對(duì)算法的理解,可讀性高便于交流,有利于算法的調(diào)試和修改
(3)健壯性:對(duì)于非法輸入的數(shù)據(jù),算法能給出相應(yīng)的響應(yīng),阻止不可預(yù)料的后果的產(chǎn)生
(4)效率與低存儲(chǔ)量需求:效率指算法的執(zhí)行時(shí)間,執(zhí)行時(shí)間短的算法效率高。存儲(chǔ)量需求是指算法執(zhí)行過(guò)程中所需的最大存儲(chǔ)空間,存儲(chǔ)量需求越小的算法效率越高。
4.算法的分析:
(1)算法效率的度量:算法執(zhí)行時(shí)間是其對(duì)應(yīng)的程序在計(jì)算機(jī)上運(yùn)行所消耗的時(shí)間。程序在計(jì)算機(jī)上運(yùn)行所需時(shí)間與下列因素有關(guān):
1)算法本身選用的策略
2)書寫程序的語(yǔ)言
3)編譯產(chǎn)生的代碼質(zhì)量
4)機(jī)器執(zhí)行指令的速度
5)問(wèn)題的規(guī)模
其中算法本身選用的策略是算法好壞的根本,書寫程序的語(yǔ)言和編譯產(chǎn)生的代碼質(zhì)量要看具體的軟件支持。
(2)算法的時(shí)間復(fù)雜度:
可以用算法中語(yǔ)句的執(zhí)行次數(shù)來(lái)度量一個(gè)算法的效率。
(3)算法的空間復(fù)雜度:
1.兩者之間的關(guān)系:
數(shù)據(jù)結(jié)構(gòu)是底層,算法高層;
數(shù)據(jù)結(jié)構(gòu)為算法提供服務(wù);
算法圍繞數(shù)據(jù)結(jié)構(gòu)操作;
2.聯(lián)系:
程序=算法+數(shù)據(jù)結(jié)構(gòu)。算法的設(shè)計(jì)取決于數(shù)據(jù)的邏輯結(jié)構(gòu),算法的實(shí)現(xiàn)取決于數(shù)據(jù)的物理存儲(chǔ)結(jié)構(gòu)。所以說(shuō),數(shù)據(jù)結(jié)構(gòu)是算法實(shí)現(xiàn)的基礎(chǔ),算法總是要依賴某種數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)的。算法的操作對(duì)象是數(shù)據(jù)結(jié)構(gòu)。兩者是相輔相成的存在,是不可分割的關(guān)系。
3.區(qū)別:
(1)兩者的指代(即定義)不同
(2)目的不同:數(shù)據(jù)結(jié)構(gòu)研究的是數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)的一些基本操作,而算法更多的是研究如何在數(shù)據(jù)結(jié)構(gòu)的基本上解決實(shí)際問(wèn)題。算法是編程思想,數(shù)據(jù)結(jié)構(gòu)則是這些思想的基礎(chǔ)。
(3)特點(diǎn)不同:算法中執(zhí)道行內(nèi)的任何計(jì)算步驟都是可以被分解為基本的可執(zhí)行的操作步驟,即每個(gè)計(jì)算步驟都可以在有限時(shí)間內(nèi)完成。數(shù)據(jù)結(jié)構(gòu)核心技術(shù)是分解與抽象。通過(guò)分解可以劃分出數(shù)據(jù)的3個(gè)層次;再通過(guò)抽象,舍棄數(shù)據(jù)元素的具體 內(nèi)容,就得到邏輯結(jié)構(gòu)。
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"數(shù)據(jù)結(jié)構(gòu)與算法知識(shí)",希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為您服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743