更新時(shí)間:2022-12-20 12:44:42 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3135次
Java算法與數(shù)據(jù)結(jié)構(gòu)是什么?動(dòng)力節(jié)點(diǎn)小編來(lái)為大家進(jìn)行介紹。

1.常見(jiàn)數(shù)據(jù)結(jié)構(gòu):
Array(數(shù)組)、Stack(棧)、Queue(隊(duì)列)、LinkedList(鏈表)、Tree(樹(shù))、Hash(哈希表)、Heap(堆)、Graph(圖)
2.各種數(shù)據(jù)結(jié)構(gòu)總結(jié):
(1)數(shù)組:
優(yōu)點(diǎn):插入數(shù)據(jù)快
缺點(diǎn):查找慢,刪除慢,大小固定,只能存儲(chǔ)單一元素
(2)有序數(shù)組:
優(yōu)點(diǎn):比無(wú)序數(shù)組查詢快
缺點(diǎn):查找慢,刪除慢,大小固定,只能存儲(chǔ)單一元素
(3)棧:
優(yōu)點(diǎn):先進(jìn)后出
缺點(diǎn):存取很慢
(4)隊(duì)列:
優(yōu)點(diǎn):先進(jìn)先出
缺點(diǎn):存取很慢
(5)鏈表:
優(yōu)點(diǎn):插入快,刪除快
缺點(diǎn):查找很慢
(6)二叉樹(shù):
優(yōu)點(diǎn):如果樹(shù)是平橫的,查找、刪除、插入都很快
缺點(diǎn):刪除算法復(fù)雜
(7)紅黑樹(shù):
優(yōu)點(diǎn):樹(shù)總是平衡的,查找、刪除、插入都很快
缺點(diǎn):算法復(fù)雜
(8)2-3-4樹(shù):
優(yōu)點(diǎn):樹(shù)總是平衡的,類似的樹(shù)對(duì)磁盤存儲(chǔ)有效,
缺點(diǎn):算法復(fù)雜
(9)哈希表:
優(yōu)點(diǎn):如果已知關(guān)鍵字則存取極快
缺點(diǎn):刪除數(shù)據(jù)慢,不知道關(guān)鍵字則存取數(shù)據(jù)都很慢,對(duì)存儲(chǔ)空間使用不充分
(10)堆:
優(yōu)點(diǎn):插入數(shù)據(jù)和刪除數(shù)據(jù)都快,對(duì)最大項(xiàng)數(shù)據(jù)存取快
缺點(diǎn):對(duì)其它數(shù)據(jù)項(xiàng)存取慢
(11)圖:
優(yōu)點(diǎn):對(duì)現(xiàn)實(shí)世界建模
缺點(diǎn):有些算法慢且復(fù)雜
1.算法5個(gè)特征:
(1)有窮性:對(duì)于任意一組合法輸入值,在執(zhí)行又窮步驟之后一定能結(jié)束,即:算法中的每個(gè)步驟都能在有限時(shí)間內(nèi)完成。
(2)確定性:在每種情況下所應(yīng)執(zhí)行的操作,在算法中都有確切的規(guī)定,使算法的執(zhí)行者或閱讀者都能明確其含義及如何執(zhí)行。并且在任何條件下,算法都只有一條執(zhí)行路徑。
(3)可行性:算法中的所有操作都必須足夠基本,都可以通過(guò)已經(jīng)實(shí)現(xiàn)的基本操作運(yùn)算有限次實(shí)現(xiàn)之。
(4)有輸入:作為算法加工對(duì)象的量值,通常體現(xiàn)在算法當(dāng)中的一組變量。有些輸入量需要在算法執(zhí)行的過(guò)程中輸入,而有的算法表面上可以沒(méi)有輸入,實(shí)際上已被嵌入算法之中。
(5)有輸出:它是一組與“輸入”有確定關(guān)系的量值,是算法進(jìn)行信息加工后得到的結(jié)果,這種確定關(guān)系即為算法功能。
2.算法的設(shè)計(jì)原則:
(1)正確性:首先,算法應(yīng)當(dāng)滿足以特定的“規(guī)則說(shuō)明”方式給出的需求。其次,對(duì)算法是否“正確”的理解可以有以下四個(gè)層次:
程序語(yǔ)法錯(cuò)誤。
程序?qū)τ趲捉M輸入數(shù)據(jù)能夠得出滿足需要的結(jié)果。
程序?qū)τ诰倪x擇的、典型、苛刻切帶有刁難性的幾組輸入數(shù)據(jù)能夠得出滿足要求的結(jié)果。
程序?qū)τ谝磺泻戏ǖ妮斎霐?shù)據(jù)都能得到滿足要求的結(jié)果。
PS:通常以第 三 層意義的正確性作為衡量一個(gè)算法是否合格的標(biāo)準(zhǔn)。
(2)可讀性:算法為了人的閱讀與交流,其次才是計(jì)算機(jī)執(zhí)行。因此算法應(yīng)該易于人的理解;另一方面,晦澀難懂的程序易于隱藏較多的錯(cuò)誤而難以調(diào)試。
(3)健壯性:當(dāng)輸入的數(shù)據(jù)非法時(shí),算法應(yīng)當(dāng)恰當(dāng)?shù)淖龀龇磻?yīng)或進(jìn)行相應(yīng)處理,而不是產(chǎn)生莫名其妙的輸出結(jié)果。并且,處理出錯(cuò)的方法不應(yīng)是中斷程序執(zhí)行,而是應(yīng)當(dāng)返回一個(gè)表示錯(cuò)誤或錯(cuò)誤性質(zhì)的值,以便在更高的抽象層次上進(jìn)行處理。
(4)高效率且低存儲(chǔ)量需求:通常算法效率值得是算法執(zhí)行時(shí)間;存儲(chǔ)量是指算法執(zhí)行過(guò)程中所需要的最大存儲(chǔ)空間,兩者都與問(wèn)題的規(guī)模有關(guān)。
以上就是關(guān)于“Java算法與數(shù)據(jù)結(jié)構(gòu)的介紹”,大家如果想了解更多相關(guān)知識(shí),不妨來(lái)關(guān)注一下本站的Java數(shù)據(jù)結(jié)構(gòu)視頻教程,里面的課程內(nèi)容由淺到深,通俗易懂,很適合沒(méi)有基礎(chǔ)的小伙伴學(xué)習(xí),希望對(duì)大家能夠有所幫助哦。
相關(guān)閱讀
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)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)