更新時(shí)間:2020-10-28 16:36:25 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1753次
數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合,數(shù)據(jù)結(jié)構(gòu)也是計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式,通常情況下,良好的的數(shù)據(jù)結(jié)構(gòu)可以帶來更高的運(yùn)行或者存儲(chǔ)效率,往往與性能、優(yōu)化話題相關(guān) 。

數(shù)據(jù)結(jié)構(gòu)
棧:一種遵從先進(jìn)后出(LIFO)原則的有序集合;新添加的或待刪除的元素都保存在棧的末尾,稱作棧頂,另一端為棧底。在棧里,新元素都靠近棧頂,舊元素都接近棧底。
隊(duì)列:與上相反,一種遵循先進(jìn)先出(FIFO/First In First Out)原則的一組有序的項(xiàng);隊(duì)列在尾部添加新元素,并從頭部移除元素。最新添加的元素必須排在隊(duì)列的末尾。
鏈表:存儲(chǔ)有序的元素集合,但不同于數(shù)組,鏈表中的元素在內(nèi)存中并不是連續(xù)放置的;每個(gè)元素由一個(gè)存儲(chǔ)元素本身的節(jié)點(diǎn)和一個(gè)指向下一個(gè)元素的引用(指針/鏈接)組成。
集合:由一組無序且唯一(即不能重復(fù))的項(xiàng)組成;這個(gè)數(shù)據(jù)結(jié)構(gòu)使用了與有限集合相同的數(shù)學(xué)概念,但應(yīng)用在計(jì)算機(jī)科學(xué)的數(shù)據(jù)結(jié)構(gòu)中。
字典:以[鍵,值]對(duì)為數(shù)據(jù)形態(tài)的數(shù)據(jù)結(jié)構(gòu),其中鍵名用來查詢特定元素,類似于Javascript中的Object。
散列:根據(jù)關(guān)鍵碼值(Key value)直接進(jìn)行訪問的數(shù)據(jù)結(jié)構(gòu);它通過把關(guān)鍵碼值映射到表中一個(gè)位置來訪問記錄,以加快查找的速度;這個(gè)映射函數(shù)叫做散列函數(shù),存放記錄的數(shù)組叫做散列表。
樹:由n(n>=1)個(gè)有限節(jié)點(diǎn)組成一個(gè)具有層次關(guān)系的集合;把它叫做“樹”是因?yàn)樗雌饋硐褚豢玫箳斓臉?,也就是說它是根朝上,而葉朝下的,基本呈一對(duì)多關(guān)系,樹也可以看做是圖的特殊形式。
圖:圖是網(wǎng)絡(luò)結(jié)構(gòu)的抽象模型;圖是一組由邊連接的節(jié)點(diǎn)(頂點(diǎn));任何二元關(guān)系都可以用圖來表示,常見的比如:道路圖、關(guān)系圖,呈多對(duì)多關(guān)系。
算法
排序算法
冒泡排序:比較任何兩個(gè)相鄰的項(xiàng),如果第一個(gè)比第二個(gè)大,則交換它們;元素項(xiàng)向上移動(dòng)至正確的順序,好似氣泡上升至表面一般,因此得名。
選擇排序:每一次從待排序的數(shù)據(jù)元素中選出最小(或最大)的一個(gè)元素,存放在序列的起始位置,以此循環(huán),直至排序完畢。
插入排序:將一個(gè)數(shù)據(jù)插入到已經(jīng)排好序的有序數(shù)據(jù)中,從而得到一個(gè)新的、個(gè)數(shù)加一的有序數(shù)據(jù),此算法適用于少量數(shù)據(jù)的排序,時(shí)間復(fù)雜度為O(n^2)。
歸并排序:將原始序列切分成較小的序列,只到每個(gè)小序列無法再切分,然后執(zhí)行合并,即將小序列歸并成大的序列,合并過程進(jìn)行比較排序,只到最后只有一個(gè)排序完畢的大序列,時(shí)間復(fù)雜度為O(n log n)。
快速排序:通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對(duì)這兩部分?jǐn)?shù)據(jù)分別進(jìn)行上述遞歸排序,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列,時(shí)間復(fù)雜度為O(n log n)。
動(dòng)力節(jié)點(diǎn)Java數(shù)據(jù)結(jié)構(gòu)與算法實(shí)戰(zhàn)視頻:http://www.soulsinkind.com/javavideo/190.html

以上就是對(duì)“數(shù)據(jù)結(jié)構(gòu)與算法視頻教程哪個(gè)好”的介紹,希望對(duì)大家有所幫助,還想學(xué)習(xí)更多關(guān)于Java的課程,可以關(guān)注動(dòng)力節(jié)點(diǎn)官網(wǎng)Java視頻教程,免費(fèi)下載學(xué)習(xí)。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)