自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 资源 (7)
  • 问答 (2)
  • 收藏
  • 关注

原创 IDEA常用快捷键

Ctrl删除光标所在行 或 删除选中的行:Ctrl + Y剪切光标所在行 或 剪切选择内容:Ctrl + X复制光标所在行 或 复制选择内容:Ctrl + C复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面:Ctrl + D递进式选择代码块。可选中光标所在的单词或段落,连续按会在原有选中的基础上再扩展选中范围:Ctrl + W显示一个类的子类(实现类):Ctrl + H显示最近打开的文件记录列表:Ctrl + E方法参数提示显示:Ctrl + P选择可重写的方法:Ctrl +

2020-12-29 16:46:04 160

原创 23. 合并K个升序链表

第一次独立写出hard难度的题,记录一下,虽然确实水(逃/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = .

2020-12-31 21:49:05 66

原创 归并排序的LeetCode作业

◼ 合并两个有序数组https://leetcode-cn.com/problems/merge-sorted-array/◼ 合并两个有序链表https://leetcode-cn.com/problems/merge-two-sorted-lists/comments/◼ 合并K个有序链表https://leetcode-cn.com/problems/merge-k-sorted-lists/好家伙第一次独立写出来hard难度的题,虽然解法很暴力(逃...

2020-12-31 21:08:35 186

原创 Java实现桶排序

◼ 执行流程① 创建一定数量的桶(比如用数组、链表作为桶)② 按照一定的规则(不同类型的数据,规则不同),将序列中的元素均匀分配到对应的桶③ 分别对每个桶进行单独排序④ 将所有非空桶的元素合并成有序序列在这里的规则为◼ 元素在桶中的索引元素值 * 元素数量...

2020-12-31 19:41:14 197

原创 Java实现基数排序,两种思路

◼ 基数排序非常适合用于整数排序(尤其是非负整数),因此本博客只演示对非负整数进行基数排序◼ 执行流程:依次对个位数、十位数、百位数、千位数、万位数…进行排序,直到最大元素的最大基数(从低位到高位)代码实现(含有详细注释)package com.mj.sort;public class RadixSort extends Sort<Integer> { @Override protected void sort() { // 找出最大值 int max = array[

2020-12-31 12:09:20 149 6

原创 Java实现计数排序逐步优化

最朴素的实现已经有详细注释了,懂的都懂,就是用出现的正整数当做数组索引,然后记录元素出现的次数,最后再将记录出现次数的数组遍历出来存储在结果数组中缺点显而易见,就是只能给正整数排序,而且及其浪费空间。protected void sort0() { //计数排序 最朴素的实现 // 找出最大值 int max = array[0]; for (int i = 1; i < array.length; i++) { if (array[i] > max) { max

2020-12-30 21:35:49 192

原创 Java实现希尔排序

排序思想◼希尔排序把序列看作是一个矩阵,分成 ???? 列,逐列进行排序 从某个整数逐渐减为1当 ???? 为1时,整个序列将完全有序◼ 矩阵的列数取决于步长序列(step sequence)✓ 比如,如果步长序列为{1,5,19,41,109,…},就代表依次分成109列、41列、19列、5列、1列进行排序✓ 不同的步长序列,执行效率也不同◼ 希尔本人给出的步长序列是 ????/2 ???? ,比如 ???? 为16时,步长序列是{1, 2, 4, 8}◼ 不难看出来,从8列 变为 1

2020-12-30 10:54:42 201

原创 Java实现快速排序,详细注释

快速排序——轴点构造流程快速排序——与轴点相等的元素cmp位置的判断分别改为<= 、>=会起到什么效果代码实现package com.mj.sort.cmp;import com.mj.sort.Sort;public class QuickSort<T extends Comparable<T>> extends Sort<T> { @Override protected void sort() { sort(0, array

2020-12-30 09:17:13 123

原创 Java实现选择排序

思路每一轮比较之前,先初始化最大元素索引为0,然后比较结束后,交换尾部索引和最大元素索引对应的值。循环往复。优化堆排序其实就是对选择排序的优化,先建大根堆,然后头部和尾部元素进行交换,交换完之后对索引为0的元素进行下滤,恢复堆的性质,再让头部和倒数第二个元素进行交换(代码中的体现就是交换完后heapSize- -)。详情点此进入for (int end = array.length - 1; end > 0; end--) { int max = 0; for (int begi

2020-12-30 08:49:47 119

原创 Java实现冒泡排序逐步优化

1.最朴素的冒泡排序每一轮都从索引1开始,和他的前一位进行比较,比较完一轮end–,即内层要比较的元素的索引边界减1.protected void sort() { for (int end = array.length - 1; end > 0; end--) { for (int begin = 1; begin <= end; begin++) { // if (array[begin] < array[begin - 1]) { if (cmp(

2020-12-30 08:31:16 175

原创 Java实现打印进度条

System.out.print("正在加载"); for (int i = 0; i < 80; i++) { System.out.print("."); try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); }

2020-12-29 18:12:11 823

原创 Java实现归并排序

归并排序是一种比堆排序效率还要高的算法时间复杂度O(n*logn)空间复杂度O(n/2+logn) == O(n)static void mergeSort(int[] array){ int[] leftArray = new int[array.length >> 1]; sort(0, array.length, leftArray, array); } static void sort(int begin, int end, int[

2020-12-29 12:13:00 110

原创 学习Java时可能会遇到的空指针异常java.lang.NullPointerException

1. 比如说你新建了一个Person类,其中也有一些属性和方法。然后又创建了一个Person类型的数组,Person[] persons = new Person[10]。2.但是你之后就直接使用这个数组中的元素,就会发现控制台会报空指针异常,那是因为你只是创建了这个对象数组,但是这个数组中的每个Person类型的对象元素你还没有创建,所以就会报空指针异常。...

2020-12-29 11:07:24 110

原创 通过低级流创建缓冲流往文件里写入数据

部分代码:BufferedWriter bw = null; try { bw = new BufferedWriter(new FileWriter(file));FileWriter的构造方法括号里还可以传第二个boolean类型的参数,即是否在已有文件的基础上操作。若不填,则默认为false,文件已有的内容会被清空,然后再进行操作。...

2020-12-27 19:19:33 119 3

原创 Java在当前根目录下创建一个新文件

代码:File file = new File("src\\Map.txt"); try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); }

2020-12-27 16:36:17 2844

原创 Java实现插入排序逐步优化

最朴素的版本:从数组的第二个元素进行操作,一旦发现其前面的元素比他大,就交换。static int[] insertSort(int[] array){ int len = array.length; for (int begin = 1; begin < len; begin++){ int cur = begin; while (cur > 0 && array[cur] < array[

2020-12-27 15:17:20 226

原创 二分查找最终版——Java实现

设置end为数组长度,end-begin即为元素个数,所以while的循环条件即为范围内有元素可找public static int indexOf(int[] array, int num){ if (array == null || array.length == 0) return -1; int begin = 0; int end = array.length; while (begin < end){

2020-12-27 11:34:44 83 1

原创 堆排序最终版——Java实现

HeapSort.javapackage mj.sort.cmp;import mj.sort.Sort;public class HeapSort<T extends Comparable<T>> extends Sort<T> { private int heapSize; @Override protected void sort() { // 原地建堆 heapSize = array.length; for (int i = (h

2020-12-25 13:40:42 125

原创 二叉树的非递归前序、中序、后序遍历算法实现思路及代码

前序遍历非递归然后node再进行前序遍历中序遍历非递归让node.right进行中序遍历后续遍历非递归public void preorder(Visitor<E> visitor) { if (visitor == null || root == null) return; Stack<Node<E>> stack = new Stack<>(); stack.push(root); while (!stack.isEmpt

2020-12-24 13:48:14 219

原创 数据结构之Trie——Java实现

Trie◼ Trie 也叫做字典树、前缀树(Prefix Tree)、单词查找树◼ Trie 搜索字符串的效率主要跟字符串的长度有关◼ 假设使用 Trie 存储 cat、dog、doggy、does、cast、add 六个单词实现代码package trie;import java.util.HashMap;public class Trie<V> { private int size; private Node<V> root; public int

2020-12-23 21:25:30 422

原创 二叉堆解决Top K问题

Top K问题◼ 从 n 个整数中,找出最大的前 k 个数( k 远远小于 n )◼ 如果使用排序算法进行全排序,需要 O(nlogn) 的时间复杂度◼ 如果使用二叉堆来解决,可以使用 O(nlogk) 的时间复杂度来解决新建一个小顶堆扫描 n 个整数✓ 先将遍历到的前 k 个数放入堆中✓ 从第 k + 1 个数开始,如果大于堆顶元素,就使用 replace 操作(删除堆顶元素,将第 k + 1 个数添加到堆中)扫描完毕后,堆中剩下的就是最大的前 k 个数解释:即每次去掉堆顶的最小数

2020-12-23 21:14:07 161

原创 二叉堆的简单实现(Java)

堆的基本接口设计◼ int size(); // 元素的数量◼ boolean isEmpty(); // 是否为空◼ void clear(); // 清空◼ void add(E element); // 添加元素◼ E get(); // 获得堆顶元素◼ E remove(); // 删除堆顶元素◼ E replace(E element); // 删除堆顶元素的同时插入一个新元素◼ 二叉堆的逻辑结构就是一棵完全二叉树,所以也叫完全二叉堆◼ 鉴于完全二叉树的一些特性,二叉堆的底层(物

2020-12-23 21:02:03 230

原创 TreeMap的几种遍历方法

treeMap.values()这个方法用来遍历他的所有value,由于TreeMap底层使用红黑树实现的,红黑树是比较key的大小进行添加节点的。而底层用的遍历算法是中序遍历,所以此方法的返回结果是和key的遍历结果是一一对应的。即key是从小到大的,value为每个key对应的值。treeMap.keySet()返回一个set,结果是从小到大排列的。treeMap.entrySet()返回的是一个键值对set,set的每个元素为Map.Entry<K,V>类型,结果是按照key从小

2020-12-23 15:35:45 10905

原创 优先级队列LeetCode作业

◼ 数组中的第K个最大元素:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/◼ 根据字符出现频率排序:https://leetcode-cn.com/problems/sort-characters-by-frequency/◼ 数据流中的第K大元素:https://leetcode-cn.com/problems/kth-largest-element-in-a-stream/◼ 有序矩阵中第K小的元素:https:/

2020-12-23 12:57:58 186

原创 优先级队列Java实现

◼ 优先级队列也是个队列,因此也是提供以下接口◼ int size(); // 元素的数量◼ boolean isEmpty(); // 是否为空◼ void enQueue(E element); // 入队◼ E deQueue(); // 出队◼ E front(); // 获取队列的头元素◼ void clear(); // 清空◼ 普通的队列是 FIFO 原则,也就是先进先出◼ 优先级队列则是按照优先级高低进行出队,比如将优先级最高的元素作为队头优先出队优先队列的底层实现◼ 根

2020-12-23 12:56:45 541

原创 堆排序作业

◼ 了解和实现堆排序◼ 使用堆排序将一个无序数组转换成一个升序数组空间复杂度能否下降至 O(1)

2020-12-23 09:41:53 147

原创 最容易理解的堆排序升级版——Java实现

需求分析:要求将给定的无序数组有序化思路:循环删除堆顶元素,直到堆空,将堆顶元素记录到结果数组中remove函数:删除并返回堆顶元素(用array[lastIndex]覆盖array[0],再将array[lastIndex]赋值为0,并下滤array[0]).方法:static int lastIndex;public static int[] heapSort2(int[] array){ int[] result = new int[array.length];

2020-12-23 09:38:46 79

原创 最容易理解的堆排序——Java实现

排序过程这里以构建大顶堆为例:先构建一个大顶堆,构建过程:利用批量建堆——从下而上的下滤方法构造出一个符合性质的大顶堆,其中批量建堆的方法是从叶子节点开始下滤,即elements[(array.length >>1) - 1]处开始直到根节点。建造成功之后,此时elements[0]为最大的元素一个swap函数,返回值为数组,将elements数组传入。将该elements数组的第0位元素和最后一位元素替换,并把返回结果赋值给elements,一定要记住更新eleme

2020-12-23 00:45:46 112

原创 HashMap部分源码分析

第一个:static final int TREEIFY_THRESHOLD = 8;表示链表的结点数量大于8的时候,链表就会转换成红黑树。第二个:static final int UNTREEIFY_THRESHOLD = 6;当红黑树的节点小于6后,红黑树就会变成链表。第三个:static final int MIN_TREEIFY_CAPACITY = 64;如果你想把链表变成红黑树,你哈希表的容量至少是64 并且链表结点数量大于等于9,这时候才会变成红黑树。...

2020-12-21 14:06:35 67

原创 HashMap中key为null时,value存到哪里去了?

hashMap是根据key的hashCode来寻找存放位置的,那当key为null时, 怎么存储呢?答案:当key为null时,value存在了HashMap底层table数组的table[0]位置,之后具体的存储方式和其他索引位置一致

2020-12-19 09:17:13 1409

原创 学习Java哈希表HashMap时可能会遇到的小困惑

而当你使用HashMap存储键值对时,有可能会遇到一个疑问。下面举一个我遇到的问题:Person是一个实体类(已经重写了equals和hashCode方法) ,这里的HashMap是官方的HashMap Person p1 = new com.mj.set.Person(12,1.67f,"jack"); Person p2 = new com.mj.set.Person(12,1.67f,"jack"); java.util.Map<Object, Integer> map2

2020-12-18 21:18:24 304 1

原创 二叉树、二叉搜索树、平衡二叉搜索树、AVL树、红黑树——树篇

本文主要回顾二叉树、二叉搜索树、平衡二叉搜索树、AVL树、B树、红黑树。包含具体的实现代码、部分方法的注释。树间的继承关系:BinaryTree实现BinaryTreeInfo接口BinarySearchTree继承BinaryTreeBalanceBinarySearchTree继承BinarySearchTreeAVLTree和RBTree继承BalanceBinarySearchTree二叉树◼ 二叉树的特点每个节点的度最大为 2(最多拥有 2 棵子树)左子树和右子树是有顺序

2020-12-17 16:53:59 347

原创 110. 平衡二叉树

题目**给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。**从顶至底(暴力法)就是从根节点开始判断,判断他的左右子树高度差的绝对值是否<=1,然后再递归判断他的左子树是否平衡、右子树是否平衡。代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode

2020-12-14 08:55:49 93

原创 889. 根据前序和后序遍历构造二叉树

题目代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public TreeNode constructFromPrePost(int[] pre, int[]

2020-12-13 11:25:45 123

原创 106. 从中序与后序遍历序列构造二叉树

题目思路后序遍历的序列的最后一个元素是根节点。根据这个根节点切割、新建数组。和前序与后序遍历序列构造二叉树类似代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution {

2020-12-13 10:47:08 110

原创 105. 从前序与中序遍历序列构造二叉树

代码class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { if(preorder.length==0 || inorder.length==0) { return null; } //根据前序数组的第一个元素,就可以确定根节点 TreeNode root = new TreeNode(preorder[0]); for(int i=0;i<preorder.length;+.

2020-12-13 10:28:34 162

原创 平衡二叉搜索树的LeetCode作业

◼ 平衡二叉树:https://leetcode-cn.com/problems/balanced-binary-tree/

2020-12-13 10:25:24 133

原创 二叉搜索树的LeetCode作业

◼ 删除二叉搜索树中的节点:https://leetcode-cn.com/problems/delete-node-in-a-bst/◼ 二叉搜索树中的搜索:https://leetcode-cn.com/problems/search-in-a-binary-search-tree/◼ 二叉搜索树中的插入操作:https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/◼验证二叉搜索树:https://leetcode

2020-12-13 10:23:08 82

原创 二叉树的LeetCode作业

◼ 翻转二叉树https://leetcode-cn.com/problems/invert-binary-tree/◼ 计算二叉树的高度https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof/◼ 二叉树的前序遍历:https://leetcode-cn.com/problems/binary-tree-preorder-traversal/ (递归+迭代)◼ 二叉树的中序遍历:https://leetcode-cn.com/pr

2020-12-13 10:18:58 121

原创 队列的LeetCode作业

◼ 用栈实现队列https://leetcode-cn.com/problems/implement-queue-using-stacks/◼ 用队列实现栈https://leetcode-cn.com/problems/implement-stack-using-queues/

2020-12-13 09:20:38 91

Java程序员面试资料及简历模版

Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版

2022-05-04

微机原理期末复习试卷附详细答案和必背知识点

微机原理期末复习试卷附详细答案和必背知识点,适合考前抱佛脚的同学。 微机原理期末复习试卷附详细答案和必背知识点,适合考前抱佛脚的同学 微机原理期末复习试卷附详细答案和必背知识点,适合考前抱佛脚的同学 微机原理期末复习试卷附详细答案和必背知识点,适合考前抱佛脚的同学 微机原理期末复习试卷附详细答案和必背知识点,适合考前抱佛脚的同学 微机原理期末复习试卷附详细答案和必背知识点,适合考前抱佛脚的同学 微机原理期末复习试卷附详细答案和必背知识点,适合考前抱佛脚的同学 微机原理期末复习试卷附详细答案和必背知识点,适合考前抱佛脚的同学 微机原理期末复习试卷附详细答案和必背知识点,适合考前抱佛脚的同学 微机原理期末复习试卷附详细答案和必背知识点,适合考前抱佛脚的同学

2022-05-04

jdk-14.0.1.zip

jdk-14.0.1.zip

2021-09-10

officedeploymenttool_14131-20278.exe

安装Visio失败提示安装即点即用版本 利用office部署工具安装visio2016

2021-09-10

JavaWeb实现简单通讯录程序(Mysql5.5+Tomcat8.5.31+Druid连接池)

简单实现联系人数据的增删改查,可当做小Demo练练手。

2021-06-21

SchoolGuide.zip

西邮数据结构课设校园导游系统Java实现,基本功能全部实现,找我要课设报告。

2020-12-29

Java考试系统,使用了swing、文件IO、反射等JavaSE部分的基础知识。

该文件是基于JavaSE知识实现的简单考试系统,未使用数据库知识,底层用文件存储用户信息,初步采用MVC 分层架构思想,还包含多种设计模式。

2020-11-25

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

TA关注的人

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