注意:注意陣列下標越界char cs = new char;
char cs1 = new char[4];
cs1[0] = 'a';
特點:char cs = new char;
system.out.println(cs[4]);
1.記憶體位址連續,使用之前必須指定陣列長度
2.可以通過下標訪問的方式訪問成員,查詢效率高
3.增刪操作會給系統帶來效能消耗--因為只能把需要保留的資料拷貝到乙個新陣列
單向鍊錶、雙向鍊錶
雙向鍊錶
特點:1.靈活的空間要求,儲存空間不要求連續
2.不支援下標訪問,支援順序遍歷檢索
3.針對增刪操作,效率更高,只和操作節點的前後節點有關係,無需移動元素
4.針對查詢操作,效率沒有陣列高
linkedlist:通過雙向鍊錶結構實現
二叉樹效能介於陣列和鍊錶之間。private static class node
}
新增元素時和當前節點值對比,如果比當前節點大,新增在節點下右側,如果比當前節點小,新增到節點下左側。
二叉樹特點:
1.某節點的左子樹節點值僅包含小於該節點值
2.某節點的右子樹節點值僅包含大於該節點值
3.左右子樹每個也必須是二叉找樹
4.順序排列
不平衡二叉樹特點:
1.查詢效率不高
面對這個問題,就要想辦法讓不平衡變得平衡,紅黑樹就是去除不平衡二叉樹的解決方案,從而達到樹的平衡。
紅黑樹red-black tree[rbt]
rbt是乙個自平衡【不是絕對的平衡】的二叉查詢樹,樹上的節點滿足如下規則:
1.每個節點要麼紅色,要麼黑色
2.根節點必須是黑色
3.每個葉子節點【空節點】是黑色
4.每個紅色節點的子節點必須是黑色
5.任意節點到每個葉子節點的路徑包含相同數量的黑節點
如何實現以上規則:
1.recolor 重新標記節點顏色為紅/黑色
2.rotation 旋轉節點實現平衡
資料結構(一 資料結構基礎
程式 資料結構 演算法 越工作越發現業務 是很容易的,框架也是舊瓶裝新水,大體差不多。那麼好的 的區分在於演算法,效能這些的差距。而資料結構是演算法實現的基礎,演算法總是要依賴某種資料結構來實現的。好久沒有仔細看資料結構了,最近被頻繁的演算法,奈何我資料結構基礎不好。決定好好複習一遍,並輸出乙份文件...
一 資料結構概述
資料結構定義 我們如何把現實中大量而複雜的問題以特定的資料型別和特定的儲存結構儲存到主儲存器 記憶體 中,以及在此基礎上為實現某個功能而執行的相應的操作 比如查詢某個元祖,刪除某個元素,對某個元素進行排序 這個相應的操作也叫作演算法。資料結構 個體 個體的關係 演算法定義 結題的方法和步驟 演算法 ...
一 資料結構 基礎
1 資料結構本質上是討論資料的儲存方式,討論資料的儲存方式只有乙個目的,那就是方便以後對資料的利用,以及對儲存空間負責。2 資料結構包括以下幾種 1 線性表結構 順序表 鍊錶 棧 佇列 2 樹結構 普通樹 二叉樹 線索二叉樹 3 圖結構 4 線性表結構 1 順序表 類似陣列,把資料按照順序儲存到一塊...