自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 查找算法

查找算法#mermaid-svg-nsHA2KLnKdZQcB1Y .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-nsHA2KLnKdZQcB1Y .label text{fill:#333}#mermaid-svg-nsHA2KLnKdZQcB1Y .node rect,#mermaid-svg-nsHA2

2021-01-31 20:28:44 103

原创 排序算法

排序算法排序算法是将一组数据依照指定的顺序进行排列的过程。排序算法又分为内部排序和外部排序:内部排序: 指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。此处只详述内部排序,如下图:#mermaid-svg-dWb4UudisFceIm1f .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-

2021-01-30 19:52:54 211 3

原创 波兰计算器和逆波兰计算器

波兰计算器和逆波兰计算器波兰表达式  波兰表达式也称前缀表达式,他是运算符写在数字的前边一种表达式。举个例子,比如一般表达式,也就是前缀表达式 (15 + 4) * 5 - 6(15 + 4) 的波兰表达式为 15  4 +(15 + 4) * 5 的波兰表达式为 15  4 + 5 *(15 + 4) * 5 - 6 的波兰表达式为 15  4 + 5 * 6 -逆波兰表达式  逆波兰表达式也称后缀表达式,他是运算符写在数字的后边一种表达式。还是上面那

2021-01-28 13:48:19 500

原创 栈模拟计算器

栈模拟计算器  计算器是我们生活中最常见的数学用具,计算器可以用栈来模拟。模拟计算器要点:使用两个栈分别来存储数字和运算符以及括号。遍历表达式字符串,分别处理’(’,’)’,运算符和数字。 如果是 ‘(’ 则直接入栈, 如果是 ‘)’ 则计算括号中的结果,如果是运算符则根据前一个操作符判断要计算还是直接入栈,如果是数字则根据表达式后一位判断要入栈还是继续读取数字拼接。遍历完字符串后,清空运算符栈,计算最终结果。下面代码演示一下:import java.util.Stack;import

2021-01-27 21:36:17 439 5

原创 单向循环链表

单向循环链表  单向循环链表和单向非环形链表的区就是,单向非环形链表的尾结点的指针是指向null的,而环形的是指向头结点。单向循环链表如图下所示:节点类代码class MyNode { int data; MyNode next; String name; public MyNode() { } public MyNode(int data) { this.data = data; } public MyNode(

2021-01-27 14:51:05 836

原创 单向链表

单向链表  链表不像数组那样,可以通过索引来获取,单向链表查找的时候必须从头开始往后一个个找,而不能从中间找,也不能从后往前找。看看下图所示的单向链表。节点类代码class MyNode { int data; MyNode next; String name; public MyNode() { } public MyNode(int data) { this.data = data; } public MyNo

2021-01-26 16:02:45 199

原创 稀疏数组

稀疏数组  当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。比如下面这个 10 x 10 的数组中只有三个数据,大部分元素是0。现在把这个数组改成稀疏数组,如下下面表格解释一下这个稀疏数组:稀疏数组(sparse array)行(row)列(col)值(value)[0](原始数组规模)10(原始数组有10行)10(原始数组有10列)3(原始数组有3个数据)[1](第一个数据)121[2](第二个数据)25

2021-01-25 21:00:05 122

原创

堆堆的定义通常情况下我们把堆看成是一棵完全二叉树。堆一般分为两种,一种是最大堆,一种是最小堆。最大堆要求根节点的值即大于左子树的值,又大于右子树的值。也就是说最大堆根节点的值是堆中最大的。最小堆根节点的值是堆中最小的,以最小堆为例子,如下图他是数组结构,结点中的数字是数组元素的下标,不是数组元素的值。所以如果我们知道父节点的下标我们就可以知道他的两个子节点(如果有子节点),如果知道子节点的下标也一定能找到父节点的下标,他们的关系是:父节点的下标 =(子节点下标 - 1)>>1;

2021-01-23 20:29:21 305

原创 树的遍历

树的遍历先了解一下树的相关定义:结点的度:一个结点含有的子结点的个数称为该结点的度;叶结点或终端结点:度为0的结点称为叶结点;非终端结点或分支结点:度不为0的结点;双亲结点或父结点:若一个结点含有子结点,则这个结点称为其子结点的父结点;孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点;兄弟结点:具有相同父结点的结点互称为兄弟结点;树的度:一棵树中,最大的结点的度称为树的度;结点的层次:从根开始定义起,根为第1层,根的子结点为第2层,以此类推;树的高度或深度:树中结点的最大

2021-01-23 16:31:54 177

原创

栈栈是一种先进后出的数据结构,如下图:package datastructure;public class MyStack<E> { private Object [] data; private int size; public MyStack(int capacity) { if (capacity <= 0) throw new IllegalArgumentException("栈的大小必须大于0");

2021-01-22 21:15:11 115 1

原创 队列

队列一般队列队列是一种先进先出的数据结构。public class MyQueue<E> { private Object[] data; private int maxSize; private int size; private int front; private int tail; public MyQueue(int maxSize) { if (maxSize <= 0) thro

2021-01-22 20:46:19 96

原创 双向链表

双向链表双向链表我们可以从头到尾查找,也可以从尾到头查找。双向链表图如下:1、双向链表结点类class Node<E>{ E data; Node<E> prev; Node<E> next; public Node(E data, Node<E> prev, Node<E> next) { this.data = data; this.prev = prev;

2021-01-22 17:54:50 130

原创 编译器优化技术-公共子表达式消除和数组边界检查消除

编译器优化技术-公共子表达式消除和数组边界检查消除公共子表达式消除  公共子表达式消除是- -项非常经典的、普遍应用于各种编译器的优化技术,它的含义是: 如果一个表达式E之前已经被计算过了,并且从先前的计算到现在E中所有变量的值都没有发生变化,那么E的这次出现就称为公共子表达式。  对于这种表达式,没有必要花时间再对它重新进行计算,只需要直接用前面计算过的表达式结果代替E。如果这种优化仅限于程序基本块内,便可称为局部公共子表达式消除( Local Common SubexpressionElimina

2021-01-17 12:41:56 1548 6

原创 Java中String的switch-case字节码与等价实现代码

Java中String的switch-case字节码与等价实现代码switch-case 语句在 case 比较稀疏的情况下,编辑器会使用 lookupswitch 指令来实现,反之,编辑器会使用 tableswitch 来实现。对于 String 的 switch-case 中会将 case 后面的string转化成哈希值,而哈希值一般是比较稀疏的,所以选择 lookupswitch 来作为switch-case来实现。拿下面例子说明:public int test(String name) {

2021-01-14 11:26:44 475

原创 Java-常量池

Java-常量池       常量池是类文件中最复杂的数据结构。对于JVM字节码来说,如果操作数是很常用的数字,比如 0,这些操作数是内嵌到字节码中的。如果是字符串常量和较大的整数等,Class文件则会把这些操作数存储到常量池中,当使用这些操作数时,会根据常量池的索引位置来查找。       常量池可以比喻为class文件里的资源仓库,它是Class文件结构中与其他

2021-01-13 13:55:57 484

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除