自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Lombok

Lombok是一个通过注解以达到减少代码的Java库,如通过注解的方式减少get,set方法,构造方法等。

2022-10-18 10:59:53 490 1

原创 Java8新特性

Lambda 表达式:在java8语言引入的一种心得语法元素和操作符,这个操作符为 “->” ,该操作符被统称为Lambda操作符或者箭头操作符。* -> :lambda操作符,也称箭头操作符* -> 左边是 lambda形参列表 (接口中抽象方法的形参列表)* -> 右边是 lambda体 (重写的抽象方法的方法体)如果一个接口中,只声明一个抽象方法,则此接口就称为函数式接口。

2022-09-18 00:07:37 753

原创 骑士周游算法(Java)

1)马踏棋盘(骑士周游问题)实际上是图的深度优先搜索(DFS)的应用2)如果使用回溯(深度优先搜索)来解决,假如马走了53个点,如图:坐标(1,0)发现已经走到尽头,没有办法继续回退,查看其他路径,就在棋盘上不停的回溯,3)分析第一种方式的问题,使用贪心算法(greedyAlgorithm)进行优化,解决马踏棋盘问题后续会用贪心算法优化。

2022-09-16 00:12:04 1086

原创 弗洛伊德算法(Java)

弗洛伊德(Floyd)算法1)和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法,该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特-弗洛伊德命名2)弗洛伊德(Floyd)算法计算图中各顶点之间的最短路径3)迪杰斯特拉算法用于计算图中某一顶点到其他顶点的最短路径4)弗洛伊德算法与迪杰斯特拉算法的区别。

2022-09-15 16:28:27 2067

原创 迪杰斯特拉算法(Java)

迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个顶点到其他顶点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。算法过程设置出发顶点为v,顶点集合V{ v1, v2,vi …} ,v到V中各顶点的距离构成距离集合Dis,Dis{ d1,d2,di…},Dis集合记录着b到图中各顶点的距离(到自身距离为0,v 到vi距离对应为di)1)从Dis中选择值最小的di移出Dis集合,同时移出V集合中对应的顶点vi,此时的v到vi即是最短路径。

2022-09-15 00:46:30 4553

原创 克鲁斯卡尔kruskal算法(Java)

1)克鲁斯卡尔(kruskal)算法,是用来求加权连通图的最小生成树的算法2)基本思想:按照权值从小到大的顺序选择n-1条边(假设最小生成树有n个顶点,则有n-1条边),并保证这n-1条边不构成回路3)具体做法:首先构造一个只含n个顶点的森林,然后依照权值从小到大从连通网中选取边加入到森林中,使得森林中不产生回路,直到森林变成一颗树为止(最小生成树)

2022-09-14 11:09:23 1384 1

原创 普利姆算法(Java)

1)普利姆(Prim)算法求最小生成树,也就是在包含n个顶点的连通图中,找出只有(n - 1 )条边包含所有n个顶点的连通子图,也就是所谓的极小连通子图2)普利姆算法如下①设G = (V,E) 是连通图,T = (U,D) 是最小生成树, V、U是顶点集合,E,D是边的集合②若从顶点u开始构成最小生成树,则从集合V中取出顶点u放入集合U中,标记顶点v 的visited[u] = 1。

2022-09-13 23:09:34 552 1

原创 贪心算法(Java)

1)贪心算法:是指在对问题进行求解时,在每一步选择中都采取最好或者最优的选择,从而希望能够导致结果是最好或者最优的算法2)贪心算法所得的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果。

2022-09-13 14:46:14 623

原创 KMP算法(java)

1)KMP是一个解决模式串在文本串是否出现过,如果出现过,最早出现大的位置的经典算法2)Knuth-Morris_Pratt字符串查找算法,简称:KMP算法,常用于在一个文本串内查找一个模式串P的出现位置,这个算法是由DonaldKnuth、vaughanPratt、JamesH.Morris三人于1977年联合发表,故取这三人的姓氏命名此算法。

2022-09-13 00:03:51 389

原创 0-1背包java(动态规划)

1)动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法2)动态规划算法与分治算法类似,其基本思想也还是将待求解问题分解成若干个小问题,先求解子问题,然后从这些子问题的解得到原问题的解3)与分治算法不同的是:以用于用动态规划求解的问题,经分解得到子问题往往不是相互独立的(即:下一个子阶段的求解是建立在上一个子阶段的基础上。进行进一步的求解)4)动态规划是可以通过填表的方式逐步推导,得到最优解。

2022-09-12 14:58:22 1215

原创 汉诺塔(Java)

分治算法的基本介绍1)分治法是一种很重要的算法,字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多相同或相似的子问题。。。

2022-09-11 15:37:10 368

原创 图的遍历(Java)

本篇文章主要是:简单的介绍了图相关的知识,并用java实现图的深度优先遍历和图的广度优先遍历。编译器使用的是IDEA。文中有详细教程地址。

2022-09-10 22:55:49 1553 1

原创 平衡二叉树(Java)

1)平衡二叉树也叫平衡二叉搜索树(Self-balancingBinarySearchTree)又被称为AVL树,可以保证查询效率较高2)具有以下特点:它是一颗空树或它的左右两个子树的高度差绝对值不超过1,并且左右两颗子树都是一颗平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树。

2022-09-07 14:15:11 635

原创 二叉搜索树(Java)

二叉排序树:BST:(BinarySort(Search)Tree),对于二叉排序树的任何一个非叶子节点,要求左子节点比当前节点的值小,右子节点的值比当前的节点的值大。**特别说明:**如果有相同的值,可以将该节点放在左子节点或者右子节点。

2022-09-06 21:20:23 321

原创 哈夫曼编码(Java)

有一说一,文章的内容出自韩顺平的数据结构和算法教程,搭配韩老师的视频教程一起观看效果会更佳。文章内有视频教学地址。

2022-09-06 14:26:47 1363

原创 哈夫曼树(Java)

1)给定n个权值作为n个叶子节点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树称为最优二叉树,也称为哈夫曼树(Huffmantree)2)哈夫曼树是带权路径长度最短的树,权值较大的节点离根节点较近。

2022-09-03 21:15:30 595

原创 堆排序(Java)

1)堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是一种不稳定的排序。

2022-09-03 14:30:35 281 1

原创 顺序存储二叉树(Java)

从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组。最后,认识一下,我是小白。努力成为一名合格的程序员。期待与你的下次相遇。5)n:表示二叉树中的第几个元素(按0开始编号)4)第n个元素的父节点为(n - 1) / 2。在 100-101p. 20分钟即可看完。2)第n个元素的左子节点为2*n + 1。3)第n个元素的右子节点为2*n + 2。1)顺序二叉树通常只考虑完全二叉树。

2022-09-02 19:05:06 384

原创 线索化二叉树(Java)

韩顺平 数据结构 YYDS!!!!这是我的学习笔记,希望大家去看韩老师的教程再来提取我的笔记,(文章里面有学习的地址)对你深入学习有很好的帮助!!!

2022-09-02 19:00:52 384

原创 二叉树(Java)

我的个人笔记!!!!!

2022-09-01 20:34:48 413

原创 哈希表(Java)

散列表(Hash table)也叫哈希表,根据关键码值(key -value)而直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中的一个位置来访问记录,以加快查找速度,这个映射函数就叫做散列函数,存放记录的数组就叫散列表。...

2022-08-31 17:54:20 327

原创 斐波那契查找(Java)

我愿称之为玄学查找,感觉我学了这个算法也没啥用。唯一的用处可能就是应付以后的面试官吧!!!!!

2022-08-31 12:22:29 311

原创 二分查找、折半查找(Java)

用Java实现二分查找算法,非递归以及递归都有详细注解。编辑使用的是IDEA。文章中有详细的教程地址。

2022-08-30 16:18:40 578

原创 基数排序(Java)

1)基数排序(radix sort)属于“分配式排序” (distribution sort),又称“桶子法”(bucket sort)或bin sort 顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用2)基数排序式属于稳定性的排序,基数排序法的是效率高的稳定性排序法3)基数排序是桶排序的扩展4)基数排序 是1887年赫尔曼—赫勒里发明的,它是这样实现的:将整数按位数切割成不同的数字,然后按每个位数分别比较。......

2022-08-29 19:21:47 381

原创 归并排序(Java)

归并排序(MERGE—SORT) 是利用归并的思想实现的排序方式,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则是将分的阶段得到的各答案“修补”在一起,即分而治之。代码实现。...

2022-08-29 16:31:11 150

原创 快速排序(Java)新手导入

快速排序(Java)好多详细注解,保姆级注解,要不进来看看?

2022-08-28 21:10:46 155

原创 希尔排序(Java)

学Java:尚硅谷,值得你永远信赖!!!尚硅谷YYDS!!!!(希尔排序)

2022-08-28 14:49:13 300

原创 插入排序(Java)

插入排序,用Java实现。里面有超级详细的注解,你确定不进来看看?

2022-08-27 19:13:21 171

原创 选择排序(Java)

选择排序(Java)保姆级别的代码,你确定不进来看看???

2022-08-26 23:14:43 249

原创 时间复杂度,超级详细

时间复杂度,超级详细教程!!!!!!

2022-08-26 18:39:05 3382

原创 8皇后问题-递归-回溯(Java)

8皇后问题-递归-回溯(Java)

2022-08-25 22:50:29 1039 2

原创 初识递归(Java)

初识递归

2022-08-25 18:25:09 146

原创 中缀表达式转后缀表达式(Java)

中缀表达式转后缀表达式 用栈和链表实现(Java)

2022-08-25 13:10:53 827

原创 逆波兰计算器(Java)

逆波兰计算器(后缀表达式)(Java实现)

2022-08-24 19:13:50 209

原创 栈实现综合计算器(Java)中缀表达式

栈实现综合计算机(java)

2022-08-24 16:03:54 203

原创 数组和链表模拟栈(Java)

数组和链表模拟栈(Java)

2022-08-23 18:15:08 283 1

原创 约瑟夫环(Java)

用Java写出约瑟夫环的场景

2022-08-23 11:27:46 1323

原创 单链表的插入节点(Java)

单链表的头插法和尾插法

2022-08-22 14:43:31 2831

原创 双链表增删改查(java)

双链表的增删改查

2022-08-22 13:37:20 100

原创 单链表练习题(Java)

单链表的相关操作

2022-08-21 19:17:31 283

空空如也

空空如也

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

TA关注的人

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