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