數(shù)據(jù)結(jié)構(gòu):指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合弄喘,是計(jì)算機(jī)存儲(chǔ)荠瘪、組織數(shù)據(jù)的方式茵休。數(shù)據(jù)機(jī)構(gòu)被形式的定義為(D,R)造成,其中D是指數(shù)據(jù)元素的有限集合显熏,R是D上所有元素關(guān)系的有限集合。
解釋:“數(shù)據(jù)結(jié)構(gòu)”的定義晒屎,首先應(yīng)該包含數(shù)據(jù)對(duì)象在計(jì)算機(jī)中的組織方式——類似于圖書館中書架上擺書的方法喘蟆。另一方面,數(shù)據(jù)對(duì)象必定與一系列施加于數(shù)據(jù)對(duì)象上的造作相關(guān)聯(lián)鼓鲁,就如書架上擺書是為了能找到想要的書或者可以插入一本新買的書蕴轨。關(guān)于數(shù)據(jù)對(duì)象在計(jì)算機(jī)中的組織方式,還包含2個(gè)概念:一是數(shù)據(jù)對(duì)象集的邏輯結(jié)構(gòu)骇吭,二是數(shù)據(jù)對(duì)象集在計(jì)算機(jī)中的物理存儲(chǔ)結(jié)構(gòu)橙弱。
舉例,學(xué)籍管理系統(tǒng)中學(xué)生信息表的每一個(gè)數(shù)據(jù)元素就是一個(gè)學(xué)生記錄。它包括學(xué)生的學(xué)號(hào)棘脐、姓名斜筐、性別、籍貫蛀缝、出生年月顷链、成績(jī)等數(shù)據(jù)項(xiàng)。這些數(shù)據(jù)項(xiàng)可以分為兩種:一種叫做初等項(xiàng)屈梁,如學(xué)生的性別嗤练、籍貫等,這些數(shù)據(jù)項(xiàng)是在數(shù)據(jù)處理時(shí)不能再分割的最小單位在讶;另一種叫做組合項(xiàng)潭苞,如學(xué)生的成績(jī),它可以再劃分為數(shù)學(xué)真朗、物理此疹、化學(xué)等更小的項(xiàng)。通常遮婶,在解決實(shí)際應(yīng)用問(wèn)題時(shí)是把每個(gè)學(xué)生記錄當(dāng)作一個(gè)基本單位進(jìn)行訪問(wèn)和處理的蝗碎。
常用的結(jié)構(gòu)有數(shù)組、棧旗扑、隊(duì)列蹦骑、鏈表、樹(shù)臀防、堆眠菇、圖、散列表等袱衷。
延伸:抽象數(shù)據(jù)類型:只描述數(shù)據(jù)對(duì)象集和相關(guān)操作集“是什么”捎废,并不涉及“如何做”的問(wèn)題。通過(guò)抽象可以屏蔽底層細(xì)節(jié)致燥,使設(shè)計(jì)更加簡(jiǎn)單登疗、理解更加方便,即它把數(shù)據(jù)對(duì)象和相關(guān)操封裝在一起嫌蚤,對(duì)于需要調(diào)用這個(gè)數(shù)據(jù)類型的用戶而言辐益,無(wú)論內(nèi)部的具體實(shí)現(xiàn)如何改變,只要對(duì)外描述的接口不變脱吱,就不影響使用智政。
算法:算法的設(shè)計(jì)取決于數(shù)據(jù)(邏輯)結(jié)構(gòu),而算法的實(shí)現(xiàn)依賴于采用的存儲(chǔ)結(jié)構(gòu)箱蝠。數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)實(shí)質(zhì)上是它的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)器中的實(shí)現(xiàn)续捂,為了全面的反映一個(gè)數(shù)據(jù)的邏輯結(jié)構(gòu)垦垂,它在存儲(chǔ)器中的映象包括兩方面內(nèi)容,即數(shù)據(jù)元素之間的信息和數(shù)據(jù)元素之間的關(guān)系疾忍。數(shù)據(jù)的運(yùn)算是在數(shù)據(jù)的邏輯結(jié)構(gòu)上定義的操作算法乔外,如檢索、插入一罩、刪除杨幼、更新和排序等。
算法是一個(gè)有限指令集聂渊,它接受一些輸入差购,產(chǎn)生輸出,并在有限步驟后終止汉嗽。算法不是程序欲逃,程序可以無(wú)限運(yùn)行,算法必須在有限步后終止饼暑。算法稳析,強(qiáng)調(diào)表現(xiàn)“做什么”,而忽略細(xì)節(jié)性的“怎么做”弓叛。
衡量算法優(yōu)劣的指標(biāo)主要有兩個(gè):空間復(fù)雜度S(n)——根據(jù)算法寫成的程序在執(zhí)行時(shí)占用存儲(chǔ)單元的長(zhǎng)度(這個(gè)長(zhǎng)度往往與輸入數(shù)據(jù)的規(guī)模n有關(guān))和時(shí)間復(fù)雜度T(n)——根據(jù)算法寫成的程序在執(zhí)行時(shí)耗費(fèi)時(shí)間的長(zhǎng)度(這個(gè)長(zhǎng)度往往也與輸入數(shù)據(jù)的規(guī)模n有關(guān))彰居。
用漸近表示法分析算法復(fù)雜度的增長(zhǎng)趨勢(shì)。
遞歸是數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)中很重要的手段