自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 锁策略, cas 和 synchronized 优化过程

1

2022-10-07 10:09:51 200 1

原创 Java实现前缀树(字典树)

字典树

2022-10-03 22:59:24 406

原创 java——堆排序

11

2022-09-27 22:53:33 287

原创 位运算——异或

11

2022-09-24 19:01:54 975

原创 java中wait的简单用法

wait

2022-09-17 09:54:56 2218

原创 java多线程顺序输出

有趣的小程序

2022-09-16 22:22:26 946

原创 线程安全问题及其解决方案

java多线程

2022-09-16 21:49:21 630

原创 Java关键字——volatile

volatile

2022-09-16 09:19:38 112

原创 Java实验-----统计英语单词

相关知识点:使用Scanner类和正则表达式来解析文件,以时间换空间。(1)创建文件:File file = new File("路径");(2)创建Scanner的输入源:Scanner sc = new Scanner(file);(3)Scanner对象设置分隔标记:sc.useDelimiter(pattern);实验目的:掌握使用Scanner类解析文件。实验要求:(1)一共出现了多少个单词;(2)一个有多少个不同的单词;(3)按单词出现的频率大

2022-05-09 14:27:46 2880 4

原创 LeetCode----50计算x的n次方

题目描述:实现pow(x,n),算x的n次幂函数(即,xn)。首先想到的就是最基本的递归算法:class Solution { public double myPow(double x, int n) { long N = n; if(N >= 0){ return calculate(x,N); }else{ return 1.0 / calculate(x,-n);...

2022-05-04 21:29:38 455

原创 Java数据结构与算法之图及图的遍历

水一篇,注释挺详细package zzh0420;import java.util.*;public class GraphTest { public static void main(String[] args) { //测试一把bfs int n = 5; Graph graph = new Graph(n); String vertex[] = {"A","B","C","D","E"}; //将顶点插

2022-04-20 18:13:45 674

原创 leetCode----24两两交换链表中的节点

题目描述:我看到这道题的第一反应就是迭代法,题目明确要求不能改变节点的值,只能交换节点,所以我们在这里就不得不设置几个新的指针来·辅助我们完成这个问题。我们设置两个指针list1 list2指向要交换的两个节点。直接上代码好看多了,可以多画图,关系一目了然ListNode dummy = new ListNode(0); dummy.next = head; ListNode temp = dummy; while(temp.next != n.

2022-04-13 20:38:53 376 1

原创 leetCode-----19 删除倒数第n个节点

题目描述:我们的思路就是找到要删除的节点的前驱节点cur,然后cur.next = cur.next.next将其删除,但由于头节点不存在前驱节点,因此我们需要在删除头节点时进行特殊判断。但如果我们添加了哑节点,那么头节点的前驱节点就是哑节点本身,此时我们就只需要考虑通用的情况即可。由于单向链表我们只能从头向后来,不能到着来,因此我们需要将倒数第n项通过数学关系转换为整数的某一项。class Solution { public ListNode removeNthFromEnd(L

2022-04-13 14:29:51 203

原创 Java数据结构与算法之分治算法

分治法,字面意思是“分而治之”,就是把一个复杂的1问题分成两个或多个相同或相似的子问题,再把子问题分成更小的子问题直到最后子问题可以简单地直接求解,原问题的解即子问题的解的合并,这个思想是很多高效算法的基础,例如排序算法(快速排序,归并排序),傅里叶变换(快速傅里叶变换)等。分治法的基本思想:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。下面我们通过汉诺塔问题来理解一下分治算法的思想大致就分为两种情况三步走:一:如果只有一个盘子就直接挪二:如果盘子

2022-04-12 16:54:53 765

原创 Java数据结构之哈夫曼树

哈夫曼树又称最优二叉树,是一种带权路径长度最短的 二叉树 。 所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。中文名: 哈夫曼树别名: 最优树外文名: Huffman Tree带权路径长度: WPL应用: 哈夫曼编码路径:在一棵树中,一个结点到另一个结点之间的通路,称为路径。路径长度:在一条路径中,每经过一个结点,路径长度都要加 1 。结点的权:给每一个结点赋予一个新的数值,被称为这个结点的权

2022-03-29 22:16:41 1578

原创 Java数据结构与算法之堆排序

堆排序的基本介绍:堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆是一种完全二叉树,每个结点的值大于或者等于左右节点的值的成为大顶堆,每个节点的值小于等于左右节点的值的成为小顶堆。这里对于左右节点的大小并没有要求。堆排序的基本思想:1.将待排序的序列构建一个堆(这里采用数组存储,二叉树的形式来理解)2.此时,整个序列的最大值就是堆顶的根节点3.

2022-03-28 16:43:36 1106 3

原创 Java数据结构之二叉树

二叉树 定义. 二叉树(binary tree)是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。. 二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树在学习二叉树之前我们先来看一张图片,很形象生动的二叉树这种数据结构图片是从另外一位博主的博客中收藏的@拼命阿紫数据结构相对于算法来说,理解起来还是挺容易的从图片来看,二叉树的节点里面应该包含数据,左右节点的指针,由于我们这里对

2022-03-26 17:30:39 1719 1

原创 Java实现快速排序算法

快速排序是对冒泡排序的一种改进,由 C.A.R.Hoare(Charles Antony Richard Hoare,东尼·霍尔)在 1962 年提出。快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分的所有数据要小,再按这种方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,使整个数据变成有序序列。这里我们选择最左边的数作为基准数,在扫描数据的过程中,我们还需要两个哨兵变量来辅助比如r l先从r位置开始扫描,直到找到比基准数小的数就停

2022-03-23 20:57:50 481

原创 java------递归回溯解决八皇后问题

八皇后问题(英文:Eight queens),是由国际象棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例。问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。如果经过±90度、±180度旋转,和对角线对称变换的摆法看成一类,共有42类。计算机发明后,有多种计算机语言可以编程解决此问题。

2022-03-21 16:03:44 1880 4

原创 java递归回溯解决走迷宫问题------初级

今天我们来学习递归算法,并简单实现一下走迷宫问题递归:简单的来说就是自己调用自己,每次调用时传入不同的参数,可以大大的减少代码量,但缺陷就是效率不太高。使用递归的重要的原则:当执行一个方法时,就会创建一个独立的受保护的空间(栈空间); 方法的局部变量时独立的,不会相互影响; 递归必须向退出程序的条件逼近,否则造成死循环; 当一个方法执行完毕,就会返回给调用它的地方; 如果方法中使用的时引用类型,则会共享该引用类型的数据。先来看两个简单的递归程序:public static voi

2022-03-21 11:12:58 761

原创 Java数据结构之堆栈

java使用数组模拟堆栈

2022-03-19 17:04:27 1031

原创 java解决约瑟夫问题

利用单向循环链表解决约瑟夫问题(约瑟夫环)

2022-03-19 16:50:52 2264

原创 java数据结构之单链表

链表是以节点的方式存储的,每个节点包括date域和next域。date域用来记录数据,next域用来记录下一个节点的位置。今天我们来谈谈带头结点单链表的基本操作: 首先我们定义一个节点。为方便输出,我们重写toString方法class HeroNode{ public int no; //表示编号 public String name; //表示名字 public String nickname; //表示昵称 HeroNode ne...

2022-03-18 15:19:54 549

原创 java数据结构之稀疏数组

一:什么是稀疏数组? 稀疏数组说到底也是一种数组,只不过它表示的是对另一个数组数据的一种特殊表示。所谓的特殊表示就是把一个数组中的行数、列数、对应的具体的数值这三个值记录在另一个数组中,从而缩小了数组的规模。这样的被缩小规模后的数组成为稀疏数组。如图:二:为什么需要稀疏数组? 为了节省内存节省资源,因此我们需要稀疏数组。三:什么时候用稀疏数组? 当一个数组中大多数元素为同一个值的时候,那么这个数组中大多数具有相同值得元素我们一定要一一存储吗?...

2022-03-17 17:37:28 978 1

原创 java学习笔记

package test0302;import java.util.Locale;public class Test1 { public static void main1(String[] args) { int a = 10; //定义了字符串常量s,在栈区为s开辟一块空间 //然后在字符串常量池中分配一块内存空间存储"hello",并将其地址赋值给s //而"hello"这个字符串将不会再改变...

2022-03-02 16:15:33 233

原创 初学java

import java.util.Arrays;import java.util.Scanner;import java.math.BigInteger;import java.math.BigDecimal;public class testdemo { public static void main1(String[] args) { int a = 0; int b = 10; /** * 在java当中,判断语句与c...

2022-02-16 08:48:24 122 1

原创 浅谈二叉树(c语言)

#include <stdio.h>#include <stdlib.h>typedef struct Treenode* Bintree;typedef Bintree Position;struct Treenode{int date;struct Treenode* left;struct Treenode* right;};//二叉树的遍历//1.先序遍历:遇到根节点先打印出来,然后去访问它的左节点,接着是右节点//...

2022-01-28 16:21:11 1139 1

原创 简略三子棋游戏

#include "game.h"void Initlizeation(char arr[ROW][COL], int row, int col){ for (int i = 0; i < row; i++) { for (int j = 0; j > col; j++) { arr[i][j] = " "; } }}void DisplayBoard(char arr[ROW][CO...

2022-01-25 10:07:49 2482

原创 C语言单链表简述

个人觉得单链表其实就是利用指针将几个结构体串联起来的一个链,它是怎么串起来的呢?在这里我们不得不提的一个结构体允许的一种定义的机制:在结构体中定义一个字指向该结构体类型的指针。这一机制是定义链表的基础。 struct node{ int date; struct node* next;};于是我们可以利用指针next来指向下一个结构体。就这样一个指一个,一个连一个就形成了链表。除此以外,我们还需要了解一下对链表的其他操作,例如增删改查。首先我们定义一个链表,这里以电影名字和评分作为结

2022-01-11 12:11:41 263

原创 if语句分支执行的简单说明

标题if语句中什么时候会执行后面的分支首先,我们来看看几段代码和执行结果首先我们给i赋值为0,接着程序进入if的判断中,判断结果为真,执行if中的语句,给i重新赋值为1并将其输出。如果此时程序继续往下走的话,进入else 中的判断的时候,判断结果也应该为真,继续输出2,但是事实是程序输出1以后就结束了。这个两个结果说明在if语句中,如果条件为假时继续对下面的分支进行判断,直到出现条件为真的时候,将不再判断后面的分支。如果所有条件全为假,将会退出程序。...

2021-12-31 11:06:26 671

原创 既来之,则安之。

一. 自我介绍: 大家好,我是某双非软工大一学生。很高兴能够进去自己感兴趣的专业和大家一块学习,我们都有自己的梦想或者目标,从今天开始,我将在这个平台上记录下我的成长之路。当然,我也希望我可以竭尽所能,走的越远越好。 二.我的目标以及打算: 虽说是双非,但我也敢想。首先我能进入到软件工程专业学习,那就应该安安心心,踏踏实实的坚持学下去。1.努力必不可少。减少打游戏的时间,多分配点时间给学习编程。2.劳逸结合也是良策。学习过程中可能会身心俱疲,心不在线时,不妨放松一下,打打羽毛球(..

2021-12-10 23:27:28 3183 1

空空如也

空空如也

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

TA关注的人

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