随笔分类 - Java数据结构与算法
1
摘要:package demo14; /** * 顶点类 * @author Richard */ public class Vertex { private String value; public boolean visited; public String getValue() { return v
阅读全文
摘要:package demo13; public class StuInfo { private int age; private int count; public int getAge() { return age; } public void setAge(int age) { this.age
阅读全文
摘要:**参考:**https://www.cnblogs.com/makai/p/10861296.html https://www.jianshu.com/p/cf7dba86c391
阅读全文
摘要:**参考:**https://www.jianshu.com/p/655d83f9ba7b 右旋转(LL)步骤:①:创建一个新的节点,值等于当年节点的值。 ** ②把新节点右子树的值设为当前节点的右子树。** ** ③把新节点左子树的值设为当前节点的左子树的右子树。** ** ④把当前节点的值换为左
阅读全文
摘要:**参考:**https://www.jianshu.com/p/bbe133625c73 创建二叉排序树,并进行中序遍历: package demo11; public class Node { int value; Node left; Node right; public Node(int v
阅读全文
摘要:**编码压缩思路:**给定一个字符串,先统计字符串中每个字节出现的次数,并放入集合(键为字节元素,也为树节点的data;值为出现的次数,也为树节点的权重)中。将每一个键值对转换为节点对象。利用得到的节点对象生成一个赫夫曼树,根据赫夫曼树进行赫夫曼编码,返回一个赫夫曼编码表的集合(键为节点的data,
阅读全文
摘要:赫夫曼树也称最优二叉树,它是n个带权叶子结点构成的所有二叉树中,带权路径长度最小的二叉树。 **树的带权路径长度WPL:**树中所有叶子节点的带权路径长度之和。 创建赫夫曼树 package demo9; public class Node implements Comparable<Node> {
阅读全文
摘要:顺序存储的二叉树通常只考虑完全二叉树 存储的数组中,第n个元素的左子结点是2n+1,右子节点是2n+2,父节点是(n-1)/2。 顺序存储的二叉树的遍历(把数组看成完全二叉树) package demo6; public class ArrayBinaryTree { int[] data; pub
阅读全文
摘要:**参考:**https://www.jianshu.com/p/bf73c8d50dc2 **二叉树:**任何一个节点的子节点数量不超过2,二叉树的子节点分为左节点和右节点。 **满二叉树:**所有叶子节点都在最后一层,而且节点的总数为:2^n-1,n是树的高度。 **完全二叉树:**所有叶子节点
阅读全文
摘要:共分为五大类:交换排序(冒泡排序、快速排序);插入排序(直接插入排序、希尔排序);选择排序(简单选择排序、堆排序);归并排序;基数排序。 (1)冒泡排序: 比较两个相邻的元素,将值大的元素交换到右边 import java.util.Arrays; public class BubbleSort {
阅读全文
摘要:**语句频度T(n):**一个算法中的语句执行次数。 **时间复杂度:**一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示。若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于0的 常数,则称f(n)是T(n)的同数量级函数。记作T
阅读全文
摘要:**递归:**在一个方法(函数)的内部调用该方法(函数)本身的编程方式。 public class TestRecursive { public static void main(String[] args) { print(3); } //递归 public static void print(i
阅读全文
摘要:双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。(插入时,原来的下一个节点仍是自己) public class DoubleNode { //上一
阅读全文
摘要:循环链表是一个首尾相接的链表,将单链表的最后一个指针域由NULL改为指向表头结点,这就是单链式的循环链表。 public class LoopNode { //节点内容 int data; //下一个节点 LoopNode next=this; public LoopNode(int data) {
阅读全文
摘要:链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 以“结点的序列”表示线性表称作线性链表(单链表),单链表是链式存取的结构。
阅读全文
摘要:```package stack;public class MyQueue { int[] elements; public MyQueue() { elements=new int[0]; } //入队 public void add(int element) { // 创建一个新的数组 int[] newArr = new...
阅读全文
摘要:``` package stack; public class MyStack { //栈的底层我们使用数组来存储数据 int[] elements; public MyStack() { elements = new int[0]; } //压入元素 public void push(int element) { // 创建一个新的数组 int[] newArr = new int[elemen
阅读全文
摘要:``` package array; import java.util.Arrays; public class MyArray { // 用于存储数据的数组 private int[] elements; public MyArray() { elements = new int[0]; } // 获取数组长度的方法 public int size() { return elements.len
阅读全文
摘要:线性结构的主要内容有: 数组、栈、队列、单链表、循环链表、双链表、递归、排序算法 。 (1)数组的基本使用 : 1.1新建数组 : package array; import java.util.Arrays; public class TestArray1 { public static void
阅读全文
摘要:数据结构 是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。 数据的存储结构有 顺序存储结构 和 链式存储结构 。 (1) 顺序存储结构 是把数据元素存放在地址连续的存储单元内,其数据间的逻辑关系和物理关系是一致的。典型代表:数组。 (2)在计算机中用一组任意的存储单
阅读全文
1

浙公网安备 33010602011771号