自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

孔祥月的博客

你会有收获的

  • 博客(162)
  • 资源 (7)
  • 问答 (15)
  • 收藏
  • 关注

原创 查找算法

查找算法java中,常用的查找算法:顺序查找(线性查找)二分查找/折半查找插值查找斐波那契查找线形查找算法举例:数列{1,8,10,89,1000,1234},判断数列中是否包含此名称,如果找到了,就是提示找到,并给出下标值。代码实现线性查找二分查找对一个有序数组进行查找{1,8,10,89,1000,1234},对一个一个无序数组,则不能使用...

2019-08-09 11:44:16 242

原创 排序算法总结

排序算法总结稳定:如果a原本在b前面,而a=b,排序之后,仍然在b的前面不稳定:如果a原本在b前面,而a=b,排序之后,a可能会出现在b的后面。内排序:所有排序操作都在内存中完成外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行时间复杂度:一个算法执行所要耗费的时间冒泡、选择、插入是平方阶,平均、最坏希尔、归并、快速、堆是线性对数...

2019-08-07 10:58:27 224

原创 归并排序

归并排序简介归并排序是利用归并的思想实现排序的方法,该算法采用经典的分治策略。归并思想排序的示意图可以看到,整个排序过程分为分和治两个过程,治的次数为n-1次治的思路描述治的阶段,需要将两个已经有序的子序列合并成一个有序序列,比如将[4,5,7,8]和[1,2,3,6]两个已经有序的子序列,合并为最终序列[1,2,3,4,5,6,7,8]思路:将指针i,j分被指...

2019-08-07 09:58:30 220

原创 基数排序

基数排序介绍1887年赫尔曼喝了礼发明的基数排序是桶排序的扩展实现思路将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成了一个有序序列。应用实例初始状态:53,3,542,748,14,214,使用基数排序,进行反序排序。根据0-9,对应10个桶...

2019-08-07 09:52:40 293

原创 冒泡排序

冒泡排序基本介绍冒泡排序的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,以从小到大为例,使值较大的元素逐渐从前向后移,就像水底下的气泡一样逐渐向上冒。因为排序过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换,从而减少不必要的比较。...

2019-08-07 09:19:33 249

原创 归并排序

归并排序简介归并排序是利用归并的思想实现排序的方法,该算法采用经典的分治策略。归并思想排序的示意图可以看到,整个排序过程分为分和治两个过程,治的次数为n-1次治的思路描述治的阶段,需要将两个已经有序的子序列合并成一个有序序列,比如将[4,5,7,8]和[1,2,3,6]两个已经有序的子序列,合并为最终序列[1,2,3,4,5,6,7,8]思路:将指针i,j分被指...

2019-08-06 11:32:42 121

原创 快速排序

快速排序简介快速排序是对冒泡排序的一种改进。基本思想是:通过一趟排序,将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分数据的所有数据都要小,然后在按此方法对这两部分分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序示例基准有程序员定,可以是每组第一位,最后一位等等其他位。快速排序法代码实现快速排序执行速度...

2019-08-05 16:04:58 117

原创 希尔排序剖析

希尔排序剖析简单插入排序存在的问题当需要插入的数是较小的数时,后移的次数明显增多,对效率有影响。介绍希尔排序是希尔于1959年提出的一种算法,希尔排序也是一种插入排序,它是简单插入排序经过修改后的一个更高效的版本,也称为缩小增量排序。希尔排序法基本思想希尔排序是把记录按下标的一定增量进行分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量...

2019-08-05 12:14:13 187

原创 插入排序

插入排序插入式排序属于内部排序法,是对欲排序的元素以插入的方式来寻找该元素的适当位置,以达到排序的目的。插入排序的基本思想:把n个待排序的元素看成一个有序表和无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出一个元素,把她的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。插入排序举例需...

2019-08-04 19:08:17 158

原创 选择排序

选择排序选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后,达到排序的目的。选择排序的思想第一次从arr[0]arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]arr[n-1]中选取最小值,与arr[1]交换,第三次从arr[2]arr[n-1]中选取最小值,与arr[2]交换,…,第i次从arr[i-1]中选取最小值。...

2019-08-04 15:25:17 128

原创 算法的时间复杂度

算法的时间复杂度基本介绍时间频度:一个算法花费时间与算法中语句的执行次数成正比,哪个算法语句执行次数多,他花费的时间就多。一个算法语句执行次数成为语句频度或时间频度T(n)。int total =0;//计算1加到100的值int end = 100;for(int i=1;i<=end;i++){ total+=i;//1}//T(n)=n+1;//1号语句执行...

2019-08-02 00:54:42 293

原创 排序算法

排序算法算法简介排序也称排序算法,排序是将一组数据,依指定的顺序进行排列的过程。(算法建立在数据结构之上,有些问题一个数据结构就能搞定,比如存储一组数。有些问题,需要算法,比如排序,不仅要存储数,而且要把数按顺序存储)分类内部排序(考试、面试重点)(使用内存)指需要将处理的所有数据都加载到内部处理器中进行排序。内部排序种类插入排序直接插入排序希尔排序选择排序...

2019-07-27 00:28:59 99

原创 迷宫回溯问题分析与实现

迷宫回溯问题分析与实现迷宫实现github小球得到的路径,和程序员设置的找路策略有关,即找路的上下左右的顺序有关。再得到小球路径时,可以先使用(下右上左),再改成(上右下左),看看路径是不是有变测试回溯现象github使用递归求最短路径...

2019-07-22 23:28:44 363

原创 递归能解决的问题和规则

递归能解决的问题和规则递归能解决什么问题各种数学问题,如8皇后问题,汉诺塔,阶乘问题,迷宫问题,球和篮子问题(google编程大赛)各种算法也会使用到递归,比如快排,归并排序,二分查找,分治算法等。将用栈解决的问题->递归代码比较简洁递归需要遵守的重要规则执行一个方法时,就创建一个新的受保护的独立空间(栈空间)方法的局部变量是独立的,不会相互影响,比如之前n...

2019-07-22 23:06:52 2074

原创 递归应用场景和调用机制

递归应用场景和调用机制典型应用场景迷宫问题:由起点,找到迷宫的出口。概念递归就是自己调用自己,每次调用时,传入不同的变量,递归有助于解决编程者解决复杂的问题,同时让代码变得简洁。用两个小案例来理解递归机制打印问题public class RecursionTest { public static void main(String[] args) {...

2019-07-22 23:05:56 354

原创 中缀表达式转后缀表达式

中缀表达式转后缀表达式问题我们可以看到,后缀表达式适合计算式进行运算,但是人却不太容易写出来,尤其是表达式很长的情况下,因此在开发中,我们需要将中缀表达式转成后缀表达式。中缀表达式转后缀表达式思路分析小括号并不是运算符这思路是由相关计算机领域专家提供的,自己设计一套有相同效果的算法,是一件较为复杂的事,相关领域老师也不定能想出来个人认为,算法分为两个境界,第一个境界,理解算...

2019-07-20 19:00:39 129

原创 逆波兰计算器

逆波兰计算器需求分析输入一个逆波兰表达式,使用栈(Stack),计算其结果支持小括号和多位数整数,因为这里目的是搞懂数据结构,而不是写计算器,所以,这里对计算器进行简化,只支持对整数的计算。思路分析从左至右扫描,将3和4压入堆栈遇到+运算符,因此弹出4和3(4为栈顶元素,3位次顶元素),计算出3+4的值,的7,再将7入栈。将5入栈接下来是×运算符,因此弹出5和7,...

2019-07-20 16:34:23 364

原创 前缀、中缀、后缀表达式(逆波兰表达式)

前缀、中缀、后缀表达式(逆波兰表达式)前缀表达式又称波兰式,前缀表达式的运算符位于操作数之前。(3+4)×5-6对应的前缀表达式就是-×+3 4 5 6写法:按优先级依次将各对数的符号写前面,数字按自然顺序写求值方法:从右至左扫描表达式,遇到数字式,将数字压入栈,遇到运算符时,弹出栈顶的两个数,用运算符对他们做相应的计算(栈顶元素和次顶元素),并将结果入栈;重复上述过程,直到表...

2019-07-20 16:33:44 344

原创 栈实现综合计算器

栈实现综合计算器需求使用栈完成计算一个表达式的结果表达式为:7*2*2-5+1-5+3-4=?分析图示思路分析通过一个index值(索引),来遍历我们的表达式。如果我们发现是一个数字,就直接入栈如果我们发现扫描到是一个符号,就分如下情况如果发现当前的符号栈为空,就直接入栈。如果符号栈有操作符,就进行比较,如果当前的操作符的优先级小于或者等于...

2019-07-16 23:05:24 189

原创 js开发总结(表单、页面)

js开发总结(表单、页面)页面跳转window.location.href=url页面刷新window.location.reload();关闭窗口window.close();表单表单信息/////使用ajax提交表单,需要对表单标签进行处理,不然,会执行默认行为<form class="layui-form"></form&gt...

2019-07-16 14:57:38 220

原创 javascript规范

javascript规范script标签最好放在之前type = “text/javascript”,script默认是,不是必须要写<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title&gt...

2019-07-16 08:33:51 129

原创 栈的思路分析和代码实现

栈的思路分析和代码实现数组模拟栈的思路分析图思路分析使用数组来模拟战定义一个变量top来表示栈顶,初始化为-1;入栈操作,当有数据加入到栈时,top++;stack[top]=data;出栈操作,int value = stack[top];top–;return value1;代码实现github...

2019-07-15 21:19:49 169

原创

栈栈的一个实际需求描述,如下图,输入一个表达式,[7*2*2-5+1-5+3-3]请问计算机底层是如何运算得到结果的?注意这不是简单的把算式列出来运算,因为我们看到这个算式7*2*2-5,但是计算机怎么理解这个算式的(对计算机而言,它接收到的就是一个字符串)?实际上,他底层使用了栈这种数据结构。简介英文:stack栈是一个先入后出的有序列表栈是限制线性表,插...

2019-07-15 20:12:14 102

原创 单向环形链表应用场景

单向环形链表应用场景约瑟夫问题(约瑟夫环)设编号为1,2…,n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。采用一个单项环形链表来处理(可以带表头也可以不带表头),具体使用头结点还是不...

2019-07-14 10:56:43 654

原创 双向链表增删改查分析

双向链表增删改查分析单向链表的缺点单向链表查找方向只能是一个方向,而双向链表可以向前或者向后查找。单向链表不能自我删除,需要靠辅助节点,而双向链表,则可以自我删除,所以前面我们单链表删除时节点,总是找到temp,temp是待删除节点的前一个节点。(利用next机制)示意图可以帮助理解删除示意图分析双向链表的遍历,添加,修改,删除的操作思路遍历的方式和单链表...

2019-07-14 10:52:47 2856

原创 mybatis开发总结

mybatis开发总结数据库通过逆项工程导出javaBean逆向工程配置文件夹需要和项目中文件夹层级名称一致传入参数问题传一个参数这是正常情形,直接传入参数就可Integer getXXX(String day);<select id="xxx" resultType="java.lang.Integer" parameterType="java.lang...

2019-07-12 15:09:57 115

原创 单链表的修改与删除

单链表的修改与删除需求一:修改节点的信息,根据no编号来修改,即no编号不能改。代码实现​ 单链表修改需求二示意图思路先找到需要删除节点的前一个节点temptemp.next = temp.next.next;被删除的节点,将不会有其他引用指向,会被垃圾回收机制回收。代码实现单链表删除...

2019-07-11 23:07:07 800

原创 单链表创建和遍历的分析实现

单链表创建和遍历的分析实现需求总体描述:使用带head头的单向链表实现水浒英雄排行榜管理具体描述:完成对英雄人物的增删改查操作,注:删除和修改,查找可以考虑学员独立完成,也可带学员完成。第一种情形在添加英雄时,直接添加到链表的尾部。第二种情形在添加英雄时,根据排名将英雄插入到指定位置。(如果有这个排名,则添加失败,并给出提示)第一种添加对链表的分析示意图...

2019-07-11 22:46:47 501

原创 链表

链表介绍LinkedList特点虽然是有序列表,但是其内存存储不是连续的,而是随机分配。是由一个个节点组成,,每个元素是以节点的方式来存储,每个节点由data域和next域,data存储节点数据值,next存储下一节点的地址。链表是有序列表,分为带头节点和不头结点,根据实际需求来确定。案例客户端和server服务器,每隔一定时间,把某个人的好友信息(比...

2019-07-11 22:44:30 109

原创 数据库按年月日查询

数据库按年月日查询有日期字段,字段类型为datatime,利用这个字段可以分别根据年、月、日来获取相关数据。函数month()year()day()week()条件group byorder bydesc其他常用…实例根据年SELECT count(*),DATE_FORMAT(createtime,'%Y') as time FROM h...

2019-07-11 14:00:42 7129 2

原创 数据模拟环形队列

数据模拟环形队列问题分析并优化目前数组使用一次就不能用,没有达到复用的效果。将这个数组使用算法,改进成一个环形队列 取模:%使用数组模拟环形队列的思路分析(通过取模实现)front变量的含义做一个调整:front就指向队列的第一个元素(原来指向队列第一个元素的前一个位置)front的初始值默认为0rear变量的含义做一个调整:rear指向队列的最后一个元素的后一...

2019-07-09 22:46:40 209

原创 队列的应用场景和介绍

队列的应用场景和介绍特点:先进先出英文:Queue应用场景举例银行排队:四个业务员,为排队的人的服务,每有一个业务员服务完成后,这时下一位被服务者从下面的队列中产生。队列介绍队列是一个有序列表,可以用数组和链表实现。数组顺序存储,链表链式存储。遵循先入先出的原则,即先存入队列的数据,要先取出,后存入的要后取出。用数组模拟示意图:rear代表尾部,f...

2019-07-09 20:36:17 12769 2

原创 稀疏数组

稀疏数组引入题意:编写一个五子棋程序,有存盘退出和续上盘的功能。棋盘是11×11格局。思路:使用二维数组记录棋盘,默认数组为0,1代表黑色棋子。2代表蓝色棋子。思路问题:因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据,可以用稀疏数组进行压缩。稀疏数组介绍:当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。...

2019-07-03 11:09:15 680

原创 线性结构和非线性结构

线性结构和非线性结构线性结构线性结构是最常用的数据结构,其特点是数据元素之间的存在一对一关系。比如a[10]=30线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构,顺序存储的线性表为顺序表,顺序表中的存储结构是连续的。分配的内存地址是连续的。链式存储的线性表是链表,链表的存储元素内存不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息。内存不连续的好处...

2019-07-02 09:36:36 4043

原创 实际编程常遇到的算法问题

实际编程常遇到的算法问题字符串替换问题(raplaceAll算法)单链表五子棋问题存档:将棋盘映射成二维数组,转成稀疏数组,写入文件,存档功能。接上局:读取文件,读取稀疏数组,二维数组,棋盘,接上局功能。约瑟夫问题(丢手帕问题)不带头结点的单向环形循环链表修路问题最小生成树,可以用普利姆算法+树结构最短路径问题弗洛伊德算法+图结构汉诺塔分...

2019-07-02 09:35:59 270

原创 数据结构与算法的关系

数据结构与算法的关系数据结构和算法的重要性算法是程序的灵魂,优秀的程序可以在海量数据计算是,依然保持高速计算一般来讲,程序会使用内存计算框架(比如spark)和缓存技术(比如redis等)来优化程序。那实际工作经历来说,在unix下开发服务器程序,功能时要支持上千万人同时在线,在上线前,做内测,一切就绪后,服务器撑不住了,公司的cto对代码进行优化,再次上线,坚如磐石,这是优化的重点...

2019-07-02 09:35:31 4017

原创 原型模式

原型模式作用:用原型实例指定创建对象的种类,并且通过复制(克隆)这些原型创建新的对象。使用频率:不常用,使用场景非常少。特点:通过克隆的方式创建对象。境界:写代码的最高境界就是crtl+c/v,建立自己的技术平台,复用代码,修改代码。关键点:抽象原型类:它是声明克隆方法的接口,是所有具体原型类的公共父类,可以是抽象类也可以是接口,甚至可以是具体实现类。具体原型类...

2019-06-16 16:34:45 1065

原创 建造者模式

建造者模式建造者功能:创造事物目标:使一个建造过程生成具有不同内容的对象。即复杂构建与其表示相分离。分离体现在代码上。关键点:Product(具体产品):表示被构造的复杂对象Builder(抽象构建产品):为创建一个产品对象的各个部件指定抽象接口BuilderImpl(抽象构建的具体实现):实现Builder接口以构造和装配该产品的各个部件,定义并明确他所创建的表示。D...

2019-06-16 11:42:05 126

原创 装饰器模式

装饰器模式解释:在不改变原有对象的基础上,将功能附加到对象上(提供了比继承更有弹性的替代方案,属于结构性),符合开闭原则,追加而不修改。装饰器模式本身就是一个打扮的过程,面包和奶油的关系。比如用奶油、巧克力将面包打扮成蛋糕。示意图啤酒分为百威、青岛、燕京等品牌,在啤酒的基础上增加了品牌和价钱。现在用代码的形式来体现。代码实现Drinkpackage decorate;...

2019-06-06 10:42:37 130

原创 代理模式

代理模式解释代理模式是指客户端(调用者)并不直接调用实际的对象,而是通过调用代理,来间接调用实际的对象。举例一:明星经纪人:经纪人给明星服务,经纪人和明星绑定,属于可以看成一个整体,可以看成一个’明星’实体。如果粉丝有事,找经纪人就相当于找明星。经纪人就相当于明星本人。示意图代码实现Starpackage proxy;//明星的抽象接口public in...

2019-06-05 20:10:32 138

超级精简版jre

在c/s架构制作打包exe包死,需要用到jre,但是一般网上下载的jre版本很大,这样安装的话非常耗存储空间,这里提供精简版本的jre。

2019-01-23

代码量统计软件

这是一款代码统计工具,能够快速统计出项目中代码行数等参数。

2018-12-18

winscp远程服务器连接

用于连接远程服务器,相当于ftp传输。小巧,简单,使用方便。

2018-12-18

移动校园助手

移动宽带上网助手,校园网络连接。仅限于移动网络环境。

2018-12-18

C盘空间释放软件

c盘一键空间释放,在日常办公中,c盘空间在不知不觉减少,此软件可以一键释放所浪费的时间。

2018-12-18

23种java设计模式

23中java设计模式,这23种java设计模式基本包含了工作中所遇到的软件设计种类。

2018-12-18

全国计算机等级三级视频教程

这是全国计算机等级三级考试教程,老师讲的较为清晰明了,祝参加三级考试的同学顺利通过。

2018-12-15

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

TA关注的人

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