自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java数据结构与算法——快速排序(思路图解代码实现)(效率测试)

快速排序快速排序法介绍:快速排序是对冒泡排序的一种改进。 基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有 数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快排示意图解:代码实现及详细步骤说明:package sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Dat

2020-05-30 17:34:50 355

原创 Java数据结构与算法——希尔排序(插入算法优化)(算法效率测验)

希尔排序我们看简单的插入排序可能存在的问题.数组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-05-28 13:38:34 213

原创 Java数据结构与算法——插入排序(思路)(代码实现)(时间测验)

插入排序插入排序法介绍**:**插入式排序属于内部排序法,是对于欲排字的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。插入排序法思想**:**把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素, 把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。下面先思路代码实现:package sort;import java.text.SimpleDate

2020-05-27 18:42:09 355

原创 Java数据结构与算法——选择排序(代码实现)(数据测试 验证代码时间)

选择排序基本介绍选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。选择排序思想**????*选择排序(select sorting) 也是一种简单的排序方法。它的基本思想是:第一次从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]^ arr[n-1]

2020-05-17 21:36:54 298

原创 Java数据结构与算法——冒泡排序 (数据测试 验证算法时间)

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

2020-05-14 22:21:03 398

原创 Java数据结构与算法——时间复杂度 空间复杂度

时间频度基本介绍时间频度: 一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多,一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)。忽略常数项结论: .2n+20和2n随着n变大,执行曲线无限接近,20可以忽略3n+10和3n随着n变大,执行曲线无限接近,10可以忽略忽略低次项结论:2n^2+3n+10和 2n^2随着n变大,执行曲线无限接近,可以忽略3n+10n^2+5n+20和 n^2随着n变大,执行曲线无限接近,可以忽略5n+20

2020-05-12 21:56:25 347

原创 Java数据结构与算法——递归(八皇后问题)

递归-八皇后问题(回溯算法)1)第一个皇后先放第一行第一列2)第二个皇后放在第二行第一列、然后判断是否OK,如果不OK,继续放在第二列、第三列、依次把所有列都放完,找到一个合适3)继续第三个皇后,还是第- -列、第二列…直到第8个皇后也能放在一个不冲突的位置,算是找到了一个正确解4)当得到一个正确解时,在栈回退到上一个栈时,就会开始回溯,即将第一个皇后, 放到第一列的所有 正确解,全部得到.5)然后回头继续第一个 皇后放第二列,后面继续循环执行1,2,3,4的步骤如下代码详情实现:pack

2020-05-10 22:02:51 245

原创 Java数据结构与算法——递归 (迷宫回溯问题)

递归简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。递归调用规则:1.当程序执行到一个方法时,就会开辟一-个独立的空间(栈)2. 每个空间的数据(局部变量),是独立的.递归需要遵守的重要规则执行一个方法时,就创建一个新的受保护的独立空间(栈空间)方法的局部变量是独立的,坏会相互影响,比如n变量如果方法中使...

2020-05-04 21:31:00 234

原创 Java数据结构与算法——计算器实现4(栈)(中缀转后缀)

中缀转后缀(不喜欢看文字描述的,可以直接看代码,代码每一步都有相应的注解,建议代码结合思路分析一块看,可以快速了解转换的整个过程)中缀表达式转后缀表达式的思路步骤分析:**初始化两个栈:运算符栈s1和储存中间结果的栈s2;从左至右扫描中缀表达式;遇到操作数时,将其压s2;遇到运算符时,比较其与s1栈顶运算符的优先级:(1)如果s1为空,或栈顶运算符为左括号“(”,则直接将此运算...

2020-05-01 17:37:53 206

原创 Java数据结构与算法——计算器实现3(栈)(后缀)(逆波兰)

后缀表达式后缀表达式又称逆波兰表达式,与前缀表达式相似,只是运算符位于操作数之后中举例说明: (3+4)X5-6对应的后缀表达式就是 3 4 + 5 X 6 -3)再比如: a +( b - c ) × d => a b c - d × +我们完成一个逆波兰计算器,要求完成如下任务:输入一个逆波兰表达式,使用栈(Stack), 计算其结果支持小括号和多位数整数,因为这里...

2020-05-01 13:03:38 211

原创 Java数据结构与算法——计算器代码实现2(栈)(中缀)(多位数)

计算器代码实现2承接上一篇实现多位数计算器的思路1.如果出现多位数,不能就一个数直接入栈。2.需要定义一个变量字符串keepNum,用于拼接,来保存多位数。3.在处理多位数时,需要expression的表达式的index位再后再看一位,如果是数就再进行循环扫描,如果是符号,数keepNum(这里的keepNum是字符型的,需转换成数字)才入栈。关键代码如下: //处理多位数 ...

2020-05-01 11:01:36 337

原创 Java数据结构与算法——计算器简单实现(栈)

使用栈完成表达式的计算思路(这里我们拿7+2*6-4为例子进行计算,这里代码70+2*6-4的两位数计算不可以,留到下一篇)1.通过一个index值(索引),来遍历我们的表达式2.如果我们发现是一个数字, 就直接入数栈3.如果发现扫描到是一个符号,就分如下情况3.1如果发现当前的符号栈为空,就直接入栈3.2如果符号栈有操作符,就进行比较,如果当前的操作符的优先级小于或者等于栈中的操作符...

2020-05-01 10:09:54 637 1

空空如也

空空如也

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

TA关注的人

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