算法基础
若疆赤云online
这个作者很懒,什么都没留下…
展开
-
数据结构-单链表作为栈使用,以及反转的思路
/** * @author zhangshiqiang on 2020/2/28. */public class LinkedStack { private int size; private int curSize; private Node head; public LinkedStack(int size) { this.size =...原创 2020-02-28 20:52:18 · 215 阅读 · 0 评论 -
数据结构-单向链表实现约瑟夫
/** * @author zhangshiqiang on 2020/2/27. */public class JosephSingleLinked { private int id; private String name; public JosephSingleLinked next; public JosephSingleLinked() {...原创 2020-02-27 23:50:00 · 109 阅读 · 0 评论 -
数据结构-顺序存储线性表
import java.util.Arrays;public class SequenceList<T> { //数组默认长度 private int DEFAULT_SIZE = 16; // 数组容量 private int capacity; //定义一个数组保存顺序线性表的元素 private Object[] el...原创 2018-03-13 11:38:51 · 168 阅读 · 0 评论 -
数据结构-链式存储线性表
链式存储结构的线性表(简称为链表)将采用一组地址任意的存储单元存放线性表中的数据元素,链式结构的线性表不会按线性的逻辑顺序来保存数据元素,它需要在每一个数据元素里保存一个引用下一个数据元素的引用。优点:插入、删除元素快,充分利用计算机内存空间缺点:查找元素需要整体遍历,空间开销大单链表:/** * Created by Administrator on 2018/3/13. ...原创 2018-03-13 14:05:51 · 171 阅读 · 0 评论 -
数据结构-栈
栈是一种数据结构,只能在某一端进行插入、删除操作的特殊线性表,通常是在尾端进行插入删除操作,允许插入、删除的一端称为栈顶(top),另一端称为栈底(bottom)从栈顶插入一个元素,是“压栈”,从栈顶删除一个元素,是“出栈”,栈中的元素是按照 后进先出(LIFO) 的原则进行的。顺序存储import java.util.Arrays;/** * Created by Admin...原创 2018-03-13 14:54:20 · 115 阅读 · 0 评论 -
数据结构-队列
简单队列是一种特殊的线性表,只允许在表的前端(front)进行删除操作,只允许在表的后端(rear)进行插入操作,进行插入操作的端称为队尾,进行删除操作的端称为队头。队列简称为先进先出(FIFO)的线性表。简单demo:import java.util.Arrays;public class SequenceQueue<T> { private int DEFA...原创 2018-03-13 15:52:32 · 125 阅读 · 0 评论 -
数据结构-树
父节点表示法:让每个节点“记住”它的父节点的索引。import java.util.ArrayList;import java.util.List;/** * Created by Administrator on 2018/3/14. */public class TreeParent<E> { public static class Node<T&...原创 2018-03-14 11:39:27 · 101 阅读 · 0 评论 -
数据结构-二叉树遍历
采用顺序结构来保存二叉树,程序遍历底层数组即可。采用链表保存二叉树:1、深度优先遍历:先访问到树中最深层次的节点 L:左子树 D:根 R:右子树 1)先(前)序遍历二叉树 DLR 2)中序遍历二叉树 LDR 3)后序遍历二叉树 LRD2、广度优先遍历:逐层访问每层的节点,也叫按...原创 2018-03-14 14:36:23 · 254 阅读 · 0 评论 -
数据结构-哈夫曼树
哈夫曼树被称为最优二叉树。是一类带权路径最短的二叉树。节点之间的路径长度:从一个节点到另一个节点之间的分支数量称为两个节点之间的路径长度。树的路径长度:从根节点到树中每一个节点的路径长度之和。节点的带权路径长度:从该节点到根节点之间的路径长度与节点上权的乘积。树的带权路径长度:树中所有叶子节点的带权路径长度之和。带权路径最小的二叉树被称为哈夫曼树或最优二叉树。简单代码实现:...原创 2018-03-15 11:08:19 · 192 阅读 · 0 评论 -
数据结构-排序二叉树
排序二叉树是一种特殊结构的二叉树,通过它可以非常方便地对树中所有节点进行排序和检索。特点:1、若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值。2、若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值。3、它的左、右子树分别为排序二叉树。代码:结合JVM内存分配图。import java.util.ArrayDeque;import java.uti...原创 2018-03-15 12:10:01 · 174 阅读 · 0 评论 -
数据结构-二叉树
二叉树指每个节点最多只能有两个子树的有序树,通常左边的子树被称为“左子树”(left subtree),右边的子树被称为“右子树”(right subtree)普通树与二叉树的区别:1、树中节点的最大度数没有限制,而二叉树节点的最大度数为2。2、无序树的节点无左、右之分,而二叉树的节点有左、右之分。满二叉树类:遵循 2^k-1个节点。二叉树第 i 层的节点数目最多为 (i-1)...原创 2018-03-14 14:22:18 · 258 阅读 · 0 评论 -
排序算法基础概念
衡量算法的优劣:1、时间复杂度:主要是分析关键字的比较次数和记录的移动次数2、空间复杂度:分析排序算法中需要多少辅助内存3、稳定性:若两个记录 A 和 B 的关键字值相等,但排序后 A、B 的先后次序保持不变,则称这种排序算法是稳定的,反之,就是不稳定的。排序大致可分为内部排序和外部排序。如果整个排序不需要借助于外部存储器(如磁盘等),所有的排序操作都在内存中完成,这种排序就被称为...原创 2018-03-16 11:05:11 · 217 阅读 · 0 评论