自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 桶排序理解+相关例题(Java实现)

桶排序原理桶排序是计数排序的扩展版本,计数排序可以看成每个桶只存储相同元素,而桶排序每个桶(桶的类型视情况而定)存储一定范围的元素,通过映射函数(常实现了间接的桶间排序),将待排序数组中的元素映射到各个对应的桶中,对每个桶中的元素进行排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序,也可能不需要排序,视情况而定),再通过一定的算法,将桶中的数据提出出来并转换成有序数组。桶排序需要尽量保证元素分散均匀,否则当所有数据集中在同一个桶中时,桶排序失效。感觉桶排序最主要的是思想,即将各

2021-05-05 12:52:17 423

原创 二分查找算法理解+leetcode例题(Java实现)

二分查找算法常需考虑二分终止和区间边界处理,死循环问题。算法解释二分查找可用来查找满足特定条件(第一个>target等)的元素的位置,我们需要依据特定的条件来决定新的左右区间和区间的开闭。二分查找也常被称为二分法或者折半查找,每次查找时通过将待查找区间分成两部分并只取 一部分继续查找,将查找的复杂度大大减少。对于一个长度为 O(n) 的数组,二分查找的时间复 杂度为 O(log n)。具体到代码上,二分查找时区间的左右端取开区间还是闭区间在绝大多数时候都可以,因此 有些初学者会容易搞不

2021-05-04 19:46:10 492 1

原创 双指针算法理解+leetcode例题(Java实现)

双指针算法双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的区域即为当前的窗口),经常用于区间搜索。若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待搜索的数组往往是排好序的。数组或字符串中,一般为左右指针,链表中一般为快慢指针。例题167. 两数之和 II - 输入有序数组题解因为数组已经排好序,我们可以采用方向相反的双指针来寻找这两个数字,一

2021-05-04 19:34:04 1798 3

原创 贪心算法理解+leetcode例题(Java)

贪心算法算法解释贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解。举一个最简单的例子:小明和小王喜欢吃苹果,小明可以吃五个,小王可以吃三个。已知苹 果园里有吃不完的苹果,求小明和小王一共最多吃多少个苹果。在这个例子中,我们可以选用的 贪心策略为,每个人吃自己能吃的最多数量的苹果,这在每个人身上都是局部最优的。又因为全局结果是局部结果的简单求和,且局部结果

2021-05-04 19:31:17 417

原创 选择排序理解(Java实现)

直接选择排序原理每一趟从无序序列中选出最大(或最小)的一个元素,顺序放在后面有序序列的首部,直到全部待排序的数据元素排完。复杂度时间复杂度为O(N^2)代码实现 public void selectSort(int[] nums) { //记录当前无序序列中最大值的索引 int max; //中间变量 int temp; //取出最值的趟数为nums.length-1,因为剩下的最后一个是0号位的数,其

2021-05-04 19:29:35 63

原创 冒泡排序理解(Java实现)

冒泡排序思想对比相邻的元素值,如果满足条件就交换元素值,把较小的元素值移动到数组前面,把大的元素值移动到数组后面(也就是交换两个元素的位置),每轮内循环都会把剩余序列中的最大数放到后面,这样数组元素就像气泡一样从底部上升到顶部。算法在双层循环中实现,其中外层循环控制排序轮数,总循环次数为要排序数组的长度减 1。而内层循环主要用于对比相邻元素的大小,以确定是否交换位置,对比和交换次数依排序轮数而减少。代码 public void bubbleSort(int nums[]) {

2021-05-04 19:28:00 83

原创 插入排序理解(Java)

插入排序1、原理直接插入排序的基本操作是 将一个记录插入到已经排好的有序表中,从而得到一个新的、记录数增1的有序表。 对于给定的一组记录,初始时假定第一个记录自成一个有序序列,其余记录为无序序列。 接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直到最后一个记录插到有序序列中为止。2、时间复杂度时间复杂度O(n^2),直接插入排序法比冒泡和简单选择排序的性能要好一些。3、java代码 public void insertSort(int[] nums)

2021-05-04 19:25:56 104

原创 归并排序理解(Java)

归并排序1、原理归并排序是一种概念上最简单的排序算法,与快速排序一样,归并排序也是基于分治法的。 **归并排序将待排序的元素序列分成两个长度相等的子序列,为每一个子序列排序,然后再将他们合并成一个子序列。**合并两个子序列的过程也就是两路归并。2、复杂度归并排序是一种稳定的排序算法,归并排序的主要问题在于它需要一个与待排序数组一样大的辅助数组空间。由于归并排序每次划分时两个子序列的长度基本一样,所以归并排序最好、最差和平均时间复杂度都是nlog2n。我们可以通过下图非常容易看懂归并排序的过程:

2021-05-04 19:23:13 109

原创 快速排序理解(Java)

快速排序(Quicksort)排序算法中快排和归并排序都属于分治算法,分治法的基本思想:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。原理快排基本思想是每次在无序序列选择一个数作为基准数(左端或右端,这里为左端),让小于基准数的放基准数的左边,大于基准数的放基准数的右边,直至序列只剩一个数。让数放到对应位置思路:分配两个哨兵(left,right)指向序列首端和末端,若基准数为左端,则right先动,否则left先动,这里为right先动,right–

2021-05-04 19:21:03 147

原创 java核心技术卷I 第4-5章

java核心技术卷I 第4-5章第四章 对象于类这一章将主要介绍如下内容:● 面向对象程序设计● 如何创建标准Java类库中的类对象● 如何编写自己的类4.1 面向对象程序设计概述面向对象程序设计(简称OOP)是当今主流的程序设计范型,它已经取代了20世纪70年代的“结构化”过程化程序设计开发技术。Java是完全面向对象的,必须熟悉OOP才能够编写Java程序。面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和**隐藏的实现部分。**程序中的很多对象来自标准库,还有

2021-05-02 00:12:21 218

原创 java核心技术卷I 第1-3章 笔记

java核心技术卷I 第1-3章本书将详细介绍下列内容:● 面向对象程序设计● 反射与代理● 接口与内部类● 异常处理● 泛型程序设计● 集合框架● 事件监听器模型● 使用Swing UI工具箱进行图形用户界面设计● 并行操作Ⅱ(高级特性)涉及企业特性以及高级的用户界面程序设计,其中详细讨论下列内容:● 流API● 文件处理与正则表达式● 数据库● XML处理● 注释● 国际化● 网络编程● 高级GUI组件● 高级图形● 原生方法第一章 java程序设计概述1.

2021-05-02 00:10:21 1553

原创 Java中的final关键字理解

final关键字1.final修改类时 该类无法被继承。2.final修饰方法时 方法无法被子类重写,但可以被继承3.final修饰变量时,只能进行一次赋值,且在生存期内不可改变它的值。​ 1)修饰基本类型时,起到常量的作用​ 2)修饰引用类型时,不能再指向其他的对象(即引用地址不可变),但被引用的对象的值是可以改变的(引用变量的值 实际上是它所引用的对象的地址)4.final不能修饰抽象类,因为抽象类需被继承才有作用,而final修饰的类不能被继承5.final不能修饰构造器,因为构造

2021-03-21 21:07:46 105

原创 谷粒商城基础篇报错集合

谷粒商城基础篇报错集合1.完成third-party模块阿里云oss对象存储功能后,发现renren-fast模块无法启动并报以下错误: Error creating bean with name 'ossClient' defined in class path resource [com/alibaba/alicloud/context/oss/OssContextAutoConfiguration.class]: Bean instantiation via factory method fai

2021-03-09 23:44:28 1630 5

原创 狂神说java注解和反射笔记

狂神说注解和反射笔记什么是注解内置注解元注解元注解的作用就是负责注解其他注解, Java定义了4个标准的meta -annotation类型,他们被用来提供对其他annotation类型作说明.这些类型和它们所支持的类在java.lang.annotation包中可以找到.(@ Target , @Retention,@Documented , @Inherited)@Target :用于描述**注解的使用范围(**即:被描述的注解可以用在什么地方)@Retenti

2021-03-03 13:09:14 552

原创 Typora如何设置图片的位置更换保存路径

Typora如何设置图片的位置?更换保存路径插入图片时Typora默认把图片保存在C盘中,怎么更改图片的保存位置呢?1.点击文件,点击偏好设置2.点击图像3.在右侧结果面版点击无特殊操作对应的下拉选项选择复制到指定路径填入指定的路径即可...

2021-02-23 14:50:26 8792

原创 狂神说MyBatisPlus概述

MyBatisPlus概述建议跟着视频学习,视频链接:https://www.bilibili.com/video/BV17E411N7KN?p=1需要的基础:MyBatis、Spring、SpringMVC以上学完就可以学习这个了!为什么学习它呢?MyBatisPlus可以节省我们大量工作时间,所有的CRUD代码他都可以自动化完成!JPA、tk-mapper、MyBatisPlus偷懒的!简介是什么?MyBatis本来就是简化JDBC操作的!官网:https://baomidou.com

2021-02-23 14:27:39 298

原创 数据结构栈的基本知识以及应用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录栈定义基本操作栈的实现应用1.平衡括号2.后缀表达式后缀表达式由来后缀表达式计算过程3.中缀到后缀的转换中缀到后缀的转换规则:4.方法调用栈定义栈是限制插入和删除只能在一个位置(表的末端即栈顶)上进行的表栈也叫做后进先出表基本操作push 入栈 pop 出栈 前者相当于插入 后者相当于删除最后插入的元素top 输出栈顶元素栈的实现1.栈的链表实现使用单链表, 通过在表的顶端插入实现push, 通过删除表顶端

2021-01-19 16:04:40 220

空空如也

空空如也

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

TA关注的人

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