自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 归并排序

1.归并排序介绍归并排序是利用归并的思想实现的排序方法,该算法采用经典的分治算法(分治法将问题分成一些小的问题然后递归求解,而治的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)2.归并排序思想示意图再来看看治阶段,我们需要将两个已经有序的子序列合并成一个有序序列,比如上图中的最后一次合并,要将[4,5,7,8]和[1,2,3,6]两个已经有序的子序列,合并为最终序列[1,2,3,...

2020-03-22 12:12:38 106

原创 快速排序

1.快速排序法介绍快速排序是对冒泡排序的一种改进.基本思想是:通过一趟排序将要排序的数据分割成独立的两个部分,其中一部分的所有数据都比另一部分的所有数据要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序数列.2.快速排序示意图3.代码实现package com.itguigu.sort;import java.util.Array...

2020-03-20 16:47:41 102

原创 希尔(shell)排序

1.简单插入排序存在的问题我们看简单的插入排序可能存在的问题.数组 arr = {2,3,4,5,6,1} 这时需要插入的数 1( 最小), 这样的过程是:{2,3,4,5,6,6}{2,3,4,5,5,6}{2,3,4,4,5,6}{2,3,3,4,5,6}{2,2,3,4,5,6}{1,2,3,4,5,6}结论: 当 需要插入的数是较小的数时, 后移的次数明显增多,对 效率有...

2020-03-11 18:05:06 368 1

原创 插入排序

1.插入排序法介绍插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的2.插入排序法思想插入排序(Insertion Sorting)的基本思想是:把 把 n 个待排序的元素看成为一个有序表和一个无序表,开始时 有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较...

2020-03-11 11:54:51 76

原创 选择排序

1.基本介绍选择排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的2.选择排序思想3.选择排序思路分析图4. 代码演示package com.itguigu.sort;import java.text.SimpleDateFormat;import java.util.Date;public class SelectSor...

2020-03-09 17:33:07 79

原创 冒泡排序

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

2020-03-09 17:27:24 67

原创 排序算法

1.排序算法介绍排序也称排序算法,排序是将一组数据,依照指定的顺序进行排序的过程2.排序的分类1) 内部排序是指将需要处理的所有数据都加载到**内部存储器(内存)**中进行排序2)外部排序数据量过大,无法全部加载到内存中,需要借助**外部存储(文件等)**进行排序3)常见的排序算法(见下图)3.算法的时间复杂度1) 度量一个程序(算法)执行时间的两种方法①.事后统计的方法这...

2020-03-09 12:15:38 84

原创 递归解决八皇后问题

1.问题描述:在8X8的国际象棋上摆放8个皇后,使其不能互相攻击,即:任意两个皇后不能处在同一行、同一列或同一斜线上,有多少种摆法?2.思路分析:1.第一个皇后先放第一行第一列;2.第二个皇后放在第二行第一列、然后判断是否OK,如果不OK,继续放在第二列、第三列,依次把所有列放完,找到一个合适;3.继续第三个皇后,还是第一列、第二列…直到第8个皇后也能放在一个不冲突的位置,算是找到一个...

2020-03-07 17:46:58 108

原创 用递归解决迷宫问题

1.问题图片描述:红色区域表示挡板,小球得到的路径与设置的找路策略有关2.代码演示package com.itguigu.recursion;public class MiGong { public static void main(String[] args) { // 1.创建一个二维数组表示地图map int[][] map = new i...

2020-03-07 17:43:13 244

原创 递归

1.递归的概念递归就是方法自己调用自己,每次调用时传入不同的变量2.递归小案例package com.itguigu.recursion;public class RecursionTest { public static void main(String[] args) { test(4); int res = factorial(4); ...

2020-03-07 17:29:00 143

原创 逆波兰计算器

需求:1).输入一个逆波兰表达式(后缀表达式),使用栈计算其结果;2).支持小括号和多位整数.思路分析1.例如:(3+4)5-6对应的后缀表达式为:3 4 + 5 * 6 - ;2.从左至右扫描,将3和4压入堆栈;3.遇到+运算符,因此弹出4和3,计算出3+4的值,得7,再将7入栈;4.将5入栈;5.接下来是运算符,因此弹出5和7,计算出7*5=35,将35入栈;6.将6入栈;...

2020-03-02 17:30:07 76

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

1.使用栈来实现综合计算器请输入一个表达式计算式:[722-5+1-5+3-3] 点击计算2.思路分析:3.代码实现(1.先实现1位数的运算;2.再扩展到多位数的运算)package com.itguigu.stack;/** * 使用栈完成表达式的计算 * 思路分析: * 1.通过一个index值,来遍历我们的表达式; * 2.创建两个栈:数栈和符号栈,如果扫描发现是数...

2020-03-02 15:53:21 118

原创 Josephu(约瑟夫)问题

问题描述:设编号为1,2,3…n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,以此类推,直到所有人出列为止,由此产生一个出队编号的序列.提示用一个不带头结点的循环链表来处理Josephu问题:先构成一个有n个节点的单循环链表,然后由k节点起从1开始计数,计到m时,对应节点从链表中删除,然后再从...

2020-02-28 16:25:10 370

原创 双向链表

1.管理单向链表的缺点分析:1).单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找;2).单向链表不能自我删除,需要靠辅助节点,而双向链表可以自我删除,所以前面我们的单链表删除节点时,总是找到temp,temp是待删除节点的上一个节点;2.双向链表的变量,添加,修改,删除操作分析1).遍历方法和单向链表一样,只是可以向前,也可以向后遍历;2).添加(默认添加到双向链表的...

2020-02-28 11:41:11 104

原创 单链表常见面试题

面试题1.求单链表中有效节点的个数;2.查找单链表中的倒数第k个节点;3.单链表的反转;4.从尾到头打印单链表(使用Stack栈).代码实现package com.itguigu.linkedlist;import java.util.Stack;import java.util.concurrent.BrokenBarrierException;public class S...

2020-02-27 16:14:42 81

原创 Java中栈的基本操作

1.实例化Stack stack = new Stack();2.进栈stack.push(Object);//返回的是入栈的内容stack.add(Object);//返回的是true或false3.出栈stack.pop();//输出并删除栈顶元素stack.peek();//输出不删除栈顶元素4.判断是否为空stack.isEmpty();5.输出栈([ , , , …]...

2020-02-27 15:50:20 3530

原创 链表

链表链表介绍链表是有序的列表,在内存中存储如下:1).链表是以节点的方式来存储,是链式存储;2).每个节点包含data域和next域(next域:指向下一个节点);3).链表的各个节点不是连续存储;4).链表分为带头节点的链表和不带头节点的链表,需要根据需求来确定单链表的逻辑示意图如下:应用实例需求:水浒英雄排行榜管理完成对英雄人物的增删改查操作(使用带头结点的链表实现),...

2020-02-26 15:03:15 159

原创 用数组模拟环形队列

用数组模拟环形队列(解决用数组模拟队列数组只能使用一次问题思路分析:代码演示思路分析:front 变量的含义做一个调整: front 就指向队列的第一个元素, 也就是说 arr[front] 就是队列的第一个元素front 的初始值 = 0rear 变量的含义做一个调整:rear 指向队列的最后一个元素的后一个位置. 因为希望空出一个空间做为约定rear 的初始值 = 0当队列满时,...

2019-10-20 21:38:23 270

原创 用数组模拟队列

用数组模拟队列存在的问题:数组只能使用一次原因:没有取模,没有做成环形队列(下一章节改进)List itempackage com.itguigu.queue;import java.util.Scanner;/**用数组模拟队列存在问题:数组只能使用一次原因:没有取模,没有做成环形队列*/public class ArrayQueueDemo {public sta...

2019-10-19 10:02:52 175

原创 数据结构

线性结构和非线性结构欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2019-10-16 11:37:54 92

空空如也

空空如也

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

TA关注的人

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