自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 排序算法之基数排序

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

2020-10-26 22:25:35 255

转载 排序算法之归并排序

简介 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 归并排序是一种概念上最简单的排序算法,与快速排序一样,归并排序也是基于分治法的。归并排序将待排序的元素序列分成两个长度相等的子序列,为每一个子序列排序,然后再将他们合并成一个子序列。合并两个子序列的过程...

2020-10-26 21:22:22 211

转载 排序算法之快速排序

简介 快速排序算法是对冒泡排序的一种改进,它采用了一种分治的策略,通常称其为分治法。分治法的思想是:将原问题分解为若干个规模更小的但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。 即通过一趟排序将进行排序的数据分割成独立的两部分,其中一部分的数据比另一部分的数据都大,然后再按此访求对这两部分数据分别进行快速排序,这样循环往复,直到进行排序的数据按一定的顺序排列。 快速排序是C.R.A.Hoare于1962年提出的一种划分交...

2020-10-25 16:48:04 402

转载 排序算法之希尔排序

简介 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 希尔排序通过将全部元素分为几个区域来提升插入排序的性能。这样可以让一个元素可以一次性地朝最终位置前进一大步。然后算法再取越来越小的步...

2020-10-24 22:32:36 1711 1

转载 逆波兰计算器分析和实现

简介 前缀表达式也叫波兰表达式。后缀表达式也叫逆波兰表达式。 逆波兰表达式实现计算器: package com.njcx.test3;import java.util.ArrayList;import java.util.List;import java.util.Stack;public class PolandNotation { /** * 逆波兰计算器 1.输入一个逆波兰表达式(后缀表达式),使用栈(stack),计算其结果 2....

2020-10-21 22:11:27 130

转载 中缀表达式转换成后缀表达式

概述 可以看到,后缀表达式适合计算式进行运算,但是人却不太容易写出来,尤其是表达式很长得情况下,因此在开发中,需要将中缀表达式转成后缀表达式。 具体步骤 1.初始化两个栈:运算符栈s1和储存中间结果的栈s2; 2.从左至右扫描中缀表达式; 3.遇到操作数时,将其压s2; 4.遇到运算符时,比较其与s1栈顶运算符的优先级:  (1)如果s1为空,或栈顶运算符为左括号“(”,则直接将此运算符入栈;  (2)否则,若优先级比栈顶运算符的高,也将运算符压入s1;  (3)否则...

2020-10-21 21:52:53 888

转载 用栈实现综合计算器

思路分析 代码实现 package org.structure.stack;/** * 使用栈实现综合计算器 * @author cjj_1 * @date 2020-08-06 10:30 */public class IntegratedCalculatorStack { public static void main(String[] args) { //定义要计算的表达式 String expresion = "300+8*4-4";

2020-10-21 21:15:08 177 1

转载 环形链表和约瑟夫问题

约瑟夫问题简介 Josephu问题为:设编号为1,2, …n的n个人围坐一圈,约定编号为k (1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始损数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。 单向环形链表图示: 用环形单链表解决约瑟夫问题的思路 思路大概分为两个部分, 1)一是首先我们需要构建一个单向环形链表, 2)二是把这个链表当成约瑟夫问题中的...

2020-10-19 21:17:36 352

原创 数据结构之单链表的反转

分析 代码实现 package com.iamp.admin;public class Test { public static void main(String[] args) { //先创建几个节点 HeroNode heroNode1 = new HeroNode(1,"宋江","及时雨"); HeroNode heroNode2 = new HeroNode(2,"卢俊义","玉麒麟"); HeroNode hero

2020-10-18 14:50:39 246 2

转载 稀疏数组

定义 稀疏数组可以看做是普通数组的压缩,但是这里说的普通数组是指无效数据量远大于有效数据量的数组。 为什么要进行压缩存储呢? 1)原数组中存在大量的无效数据,占据了大量的存储空间,真正有用的数据却少之又少 2)压缩存储可以节省存储空间以避免资源的不必要的浪费,在数据序列化到磁盘时,压缩存储可以提高IO效率 例如: 当一个数组中大部分的元素为0,或者为同一个值数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 1)记录数组...

2020-10-15 22:26:53 136

转载 hashCode的作用

1、hashCoed 的特性:(1)HashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,HashCode经常用于确定对象的存储地址;(2)如果两个对象相同, equals方法一定返回true,并且这两个对象的HashCode一定相同;(3)两个对象的HashCode相同,并不一定表示两个对象就相同,即equals()不一定为true,只能够说明这两个对象在一个散列存储结构中。(4)如果对象的equals方法被重写,那么对象的HashCode也尽量重写。有

2020-10-15 16:00:36 7805

转载 Java数据结构和算法——链表

简介 前面博客我们在讲解数组中,知道数组作为数据存储结构有一定的缺陷。在无序数组中,搜索性能差,在有序数组中,插入效率又很低,而且这两种数组的删除效率都很低,并且数组在创建后,其大小是固定了,设置的过大会造成内存的浪费,过小又不能满足数据量的存储。   本篇博客我们将讲解一种新型的数据结构——链表。我们知道数组是一种通用的数据结构,能用来实现栈、队列等很多数据结构。而链表也是一种使用广泛的通用数据结构,它也可以用来作为实现栈、队列等数据结构的基础,基本上除非需要频繁的通过下标来随机访问各个数据,否则很

2020-10-15 13:44:06 188

转载 Java数据结构和算法——队列

队列的基本概念 队列(queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。   队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first

2020-10-15 09:39:19 113

转载 Java数据结构和算法——栈

栈的基本概念 栈(英语:stack)又称为堆栈或堆叠,栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。   栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈..

2020-10-14 17:34:29 126

转载 java数据结构之冒泡、选择、插入排序算法

冒泡排序 这个名词的由来很好理解,一般河水中的冒泡,水底刚冒出来的时候是比较小的,随着慢慢向水面浮起会逐渐增大,这物理规律我不作过多解释,大家只需要了解即可。   冒泡算法的运作规律如下:   ①、比较相邻的元素。如果第一个比第二个大,就交换他们两个。   ②、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数(也就是第一波冒泡完成)。   ③、针对所有的元素重复以上的步骤,除了最后一个。   ④、持续每次对越来越少的元素重复上面的..

2020-10-14 14:18:02 134

转载 java数据结构之数组

数组介绍 在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型(Object类型数组除外)。 ⑴数组的申明 a:第一种方式: 数据类型 [] 数组名称 =new数据类型[数组长度]; 这里 [] 可以放在数组名称的前面,也可以放在数组名称的后面,我们推荐放在数组名称的前面,这样看上去 数据类型 [] 表示的很明显是一个数组类型,而放在数组名称后面,则不是那么直观。 ...

2020-10-13 16:29:04 128

原创 通过java -jar命令启动项目

nohup java -jar -Dspring.config.location=加载配置文件,多个的话以逗号隔开nohup java -jar -Dspring.config.location=../config/iamp-admin/bootstrap.properties,../config/iamp-admin/application.yml ../apps/iamp-admin-1.0-SNAPSHOT.jar --logging.config=../config/iamp-admin/log

2020-10-12 15:45:49 434

转载 springboot整合使用 Flyway 管理你数据库的版本变更

1. 前言随着项目的不断迭代,数据库表结构、数据都在发生着变化。甚至有的业务在多环境版本并行运行。数据为王的时代,管理好数据库的版本也成为了迫切的需要。如何能做到像Git之类的版本控制工具来管理数据库?Java项目中常用Flyway和Liquibase来管理数据库版本。其中Flyway相对来说比较受欢迎。2. Flyway 的特点Flyway大受欢迎是因为它具有以下优点:简单非常容易安装和学习,同时迁移的方式也很容易被开发者接受。 专一Flyway专注于搞数据...

2020-10-10 14:17:44 615

转载 为什么阿里巴巴Java开发手册中强制要求线程池不允许使用Executors创建?

手动创建线程有什么缺点? 1)不受控风险 这个缺点,相信你也可以说出一二 系统资源有限,每个人针对不同业务都可以手动创建线程,并且创建标准不一样(比如线程没有名字)。当系统运行起来,所有线程都在疯狂抢占资源,无组织无纪律,混乱场面可想而知(出现问题,自然也就不可能轻易的发现和解决) 如果有位神奇的小伙伴,为每个请求都创建一个线程,当大量请求铺面而来的时候,这好比一个正规木马程序,内存被无情榨干耗尽(你无情,你冷酷,你无理取闹) 另外,过多的线程自然也会引起上下文切换的开...

2020-10-10 11:03:04 549

空空如也

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

TA关注的人

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