原创 交換式希爾排序(Java實現)

在之前的插入排序做了一下優化,當一個比較小的數比較靠後時,進行移動的次數必然要增多,所以使用希爾排序進行改進。 實現原理:將一個待排序的數組分成arr.length/2組,步長移動爲arr.length/2,將一組內的數字比較的大小,大

原创 線索化遍歷二叉樹(Java實現)

package cn.mrlij.tree.threadedbinarytree; public class ThreadedBinaryTree { public static void main(String[] arg

原创 Java利用數組實現隊列(二)——功能優化_循環數組

上一篇簡單用數組實現了隊列的功能,但是存在一點不足,就是數組不能達到複用的效果,所以這篇文章主要想說明下對數組實現隊列的一個優化。 分析: 之前的數組,存在一個缺陷,就是當元素添加到數組滿了之後,出隊列卻不能在繼續添加了。所以,引入環形數

原创 面試題之逆序打印單鏈表(Java實現)

前提:在不改變原來單鏈表的結構的情況下,逆序打印單鏈表的內容。 實現原理 單鏈表中的一個節點保存的是數據和下一個節點的地址,現在要實現逆序打印單鏈表中的數據值,我們可以藉助棧來實現逆序打印,將每一個節點壓入棧中,利用棧先進後出的特點,最

原创 單鏈表之和(Java實現)

題目:數據在機器中存儲的方式,比如342,在鏈表中是逆向存儲的,所以就變成了2->4->3這樣了,同樣5->6->4就是465,給出兩個用鏈表表示的數字,求兩數字之和。要求以鏈表的方式返回,上面的例子就返回7->0->8 實現原理: 首

原创 線索化二叉樹的實現(Java實現)

線索化二叉樹的實現:將當前節點的前驅節點指向前一個節點,如果是第一個,則該前驅節點爲空。將當前節點的後繼節點指向爲將要遍歷的下一個節點。 舉例:按照中序遍歷來說,該順序應該爲{8,3,10,1,14,6}。8號節點是第一個,將8號節點的

原创 Java實現找零錢

題目:給定一個目標值和一個整形數組,在數組中存在兩個的和與目標值相同,找出數組中兩個值的位置 前提:數組中只存在一種組合情況等於目標值 實現思路    遍歷數組,並將數組和它所在的值放入map中,用目標值減去數組中遍歷的值,如果 在ma

原创 雙鏈表的實現(Java實現)

雙鏈表與單鏈表的區別是,單鏈表只能沿着一個方向去查找,雙鏈表可以沿着正向和反向進行查找。如下圖所示。單鏈表的實現可以看我前面的博客   實現原理 在原來單鏈表的屬性中會添加一個pre(存放前一個節點的地址),原有屬性不變。 查找:和

原创 Java實現帶頭結點的單鏈表

鏈表的特點 1,以節點方式存儲,是鏈式結構。 2,每個節點包含data域,next域:指向下一個節點。 3,鏈表的各個節點不一定是連續存儲。 4,鏈表分爲帶頭節點和不帶頭節點兩種類型的鏈表。 實現原理 添加節點:如下圖所示,首先遍歷原

原创 赫夫曼樹的構建(Java實現)

package cn.mrlij.tree; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java

原创 二叉排序樹(Java實現)

package cn.mrlij.binarysorttree; /** * 二叉排序樹 */ public class BinarySortTreeDemo { public static void main(Strin

原创 面試題之反轉單鏈表(Java實現)

使用Java實現了單鏈表的反轉,就不介紹單鏈表的結構了 如下圖所示,上面的鏈表是原鏈表,將上面的鏈表反轉成下面的鏈表。反轉的前提是頭結點的下一個節點不爲空和下下個節點不爲空,爲空則不用反轉  實現思路 1,定義一個輔助變量temp,

原创 二叉樹的查找(Java實現)

本文實現二叉樹的查找,有3種查找的方式,分別是前序,中序,後序遍歷。 package tree; /** * 二叉樹的前中後序遍歷 */ public class BinaryTreeDemo { public stati

原创 數據壓縮-赫夫曼編碼字節數組

package cn.mrlij.tree.huffman; import java.util.*; import java.util.Map.Entry; /** * 實現生成哈夫曼樹對應的哈夫曼編碼 */ public cl

原创 數據壓縮-創建哈夫曼樹實現(Java實現)

package cn.mrlij.tree; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import jav