原创 Java數據結構之赫夫曼樹與赫夫曼編碼

赫夫曼樹 基本介紹: 給定n個權值作爲n個葉子結點,構造一棵二叉樹,若該樹的帶權路徑長度(wpl)達到最小,稱這樣的二叉樹爲最優二叉樹,也稱爲哈夫曼樹(HuffmanTree), 還有的書翻譯爲霍夫曼樹。 赫夫曼樹是帶權路徑長度

原创 Java數據結構之二叉排序樹與平衡二叉樹

二叉排序樹 二叉排序樹介紹: 二叉排序樹:BST(Binary Sort(Search) Tree),對於二叉排序樹的任何一個非葉子節點,要求左子節點的值比當前節點的值小,右子節點的值比當前節點的值大。 特別說明: 如果有相同的值

原创 Java數據結構之多叉樹與B樹基本介紹

二叉樹的問題分析 二叉樹需要加載到內存的,如果二叉樹的節點少,沒有什麼問題,但是如果二叉樹的節點很多(比如1億), 就存在如下問題: 問題1:在構建二叉樹時,需要多次進行i/o操作(海量數據存在數據庫或文件中),節點海量,構建

原创 Java數據結構之樹結構與堆排序

二叉樹 爲什麼需要樹這種數據結構: 數組存儲方式的分析: 優點:通過下標方式訪問元素,速度快。對於有序數組,還可使用二分查找提高檢索速度。 缺點:如果要檢索具體某個值,或者插入值(按一定順序)會整體移動,效率較低 鏈式存儲方式的

原创 Java之集合與泛型

集合框架 1、集合又稱爲容器,用於存儲、提取、刪除數據;JDK提供的集合API都包含在 java.util 包內。 2、集合框架兩大分支:Collection接口和Map接口 Collection集合: Map集合: Li

原创 Java之詳述ArrayList類中contains方法

源碼 public boolean contains(Object o) {//參數上轉型 return indexOf(o) >= 0;//調用下面indexOf方法 } public int indexOf(Object

原创 Java之詳述HashSet類中add方法

add方法的實現源碼分析 主方法: import java.util.HashSet; public class Test2 { public static void main(String[] args) { Hash

原创 Java算法之查找

查找算法介紹 順序(線性)查找 二分查找/折半查找 插值查找 斐波那契查找 線性查找算法 代碼(查找數組中所有該元素的下標): import java.util.ArrayList; public class SeqSear

原创 Java數據結構之簡單的哈希表實現

哈希表 哈希表的基本介紹: 散列表(Hash table,也叫哈希表),是根據關鍵碼值(Key value)而直接進行訪問的數據結構。也就是說,它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度。這個映射函數叫做散列函

原创 Java算法之算法複雜度、八大排序算法(除堆排序外)

算法的時間複雜度 度量一個程序(算法)執行時間的兩種方法: 事後統計的方法: 這種方法可行, 但是有兩個問題:一是要想對設計的算法的運行性能進行評測,需要實際運行該程序;二是所得時間的統計量依賴於計算機的硬件、軟件等環境因素,

原创 Java算法之遞歸與迷宮問題、八皇后問題

遞歸的概念 簡單的說:遞歸就是方法自己調用自己,每次調用時傳入不同的變量.遞歸有助於編程者解決複雜的問題,同時可以讓代碼變得簡潔。 遞歸調用機制 打印問題 public class RecursionTest { pu

原创 Java數據結構之雙向鏈表

使用雙向鏈表實現 –水滸英雄排行榜 單向鏈表,查找的方向只能是一個方向,而雙向鏈表可以向前或者向後查找。 單向鏈表不能自我刪除,需要靠輔助節點 ,而雙向鏈表,則可以自我刪除。 分析: 直接從鏈表尾部插入節點: package

原创 Java數據結構之單向鏈表

鏈表介紹 鏈表是有序的列表,但是它在內存中是存儲如下: 1、鏈表是以節點的方式來存儲,是鏈式存儲 2、每個節點包含 data 域, next 域:指向下一個節點. 3、如圖:發現鏈表的各個節點不一定是連續存儲. 4、鏈表分帶頭

原创 Java之異常(2)throw和throws

首先寫一個一般的封裝程序代碼,用直接輸出來判斷給定的數據是否異常: public class Test { public static void main(String[] args) { Student student

原创 Java之異常(1)try-catch-finally

什麼是異常 異常: Java程序在執行過程總出現錯誤,異常出現後會導致下面的代碼不執行 public class Test1 { public static void main(String[] args) { int a