![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 63
시랑한다银子
这个作者很懒,什么都没留下…
展开
-
java冒泡排序
文章目录前言一、何为冒泡二、实现思路三、过程图解四、时间复杂度五、测试源码1.测试入口类2.模板类3.冒泡排序类六、源码解释总结前言排序是初学者不愿面对的一个问题,因为有八大经典排序,只要我们一深入的去学习这些算法就会感觉好累好难,我会逐一的解释分析这些算法,以尽可能地让大家学习起来轻松一点,也可以为温习这些算法的朋友提供一个参考。一、何为冒泡其实冒泡可以理解为不断找最大数或最小数的过程,只是在找的时候以交换的形式来进行,这也是为何冒泡排序和选择排序一样的时间复杂度但冒泡排序却效率低下的原因,就是.原创 2021-02-15 19:03:03 · 191 阅读 · 2 评论 -
java时间复杂度和空间复杂度详解
文章目录前言一、时间频度介绍二、时间频度分析1.分析算法中的时间频度2.结果三、时间复杂度介绍四、计算时间复杂度的方法1.方法2.示例五、时间复杂度分析1.分析算法中的时间复杂度2.结果六、常见的时间复杂度1.常数阶O(1)2.对数阶O(log~2~n)3.线性阶O(n)4.线性对数阶O(nlog~2~n)5.平方阶O(n^2^)6.立方阶O(n^3^)7.指数阶O(2^n^)六、空间复杂度介绍七、空间复杂度分析1.分析算法中的空间复杂度2.结果总结前言时间复杂度和空间复杂度看起来就像数学中的一些公式.原创 2021-02-07 23:06:02 · 289 阅读 · 0 评论 -
java递归(八皇后问题)
文章目录前言一、问题描述二、思路分析三、过程图解四、测试源码总结前言迷宫问题虽然也用到了递归,但它比较简单,我感觉八皇后问题才真正的体现了递归的深度难度,也体现了回溯的重要性,本文将着手揭开八皇后问题中递归的真面目一、问题描述在一个大小为8*8的国际象棋棋盘中,摆放着八个皇后,要求把八个皇后摆放到棋盘中的不同位置,使得皇后之间不能互相攻击,如果有两个皇后摆放在同一行或同一列或同一斜线,则表示这两个皇后可以互相攻击,请问该棋盘总共有多少种摆法。二、思路分析该问题可能会有很多的解法,我以我们人最容.原创 2021-02-04 17:05:40 · 241 阅读 · 0 评论 -
java递归(迷宫问题)
文章目录前言一、问题描述二、思路分析三、过程图解四、测试源码总结前言学会了递归的实现原理后,我们就可以使用递归来解决一些简单的实际问题,本文讲解的是迷宫问题。一、问题描述给出一个大小为n*n的二维数组map,该数组表示的是一幅地图,1表示障碍物,0表示通路,给出起始坐标(s1,y1)和终点坐标(s2,y2),要求输出图中起始位置到终点位置的路径。二、思路分析这是一个经典的递归问题,首先我们从起始坐标开始,选择一个方向进行递归查找,如果找到终点坐标就递归结束找到路径,如果碰到障碍物就返回上一级进.原创 2021-02-03 21:01:06 · 173 阅读 · 0 评论 -
java递归(最简单讲解)
文章目录前言一、单链表是什么?二、单链表图解三、单链表案例四、代码实现1.测试代码2.代码分析总结前言递归是学习算法的过程中一个痛苦的话题,特别是对于初学者而言,很容易让人自闭,本文以最简单的例子进行讲解,希望能让更多人懂得递归。一、单链表是什么?单链表是一种链式存取的数据结构,因为它只有指向下一个地址的引用,所以叫单向链表。二、单链表图解三、单链表案例请使用单链表模拟对水浒传中英雄人物的尾添加,有序添加,修改,删除,顺序查找,逆序查找,链表逆转,逆序打印等操作。四、代码实现1.测试代.原创 2021-01-30 18:44:15 · 793 阅读 · 0 评论 -
java实现逆波兰计算器
文章目录前言一、功能要求二、思路分析三、核心代码图解四、时间复杂度五、代码实现1.测试代码2.代码分析总结前言逆波兰计算器是用逆波兰表达式实现的一个计算器,逆波兰表达式又叫后缀表达式,我们使用该计算器时输入的是中缀表达式,然后计算器会把中缀表达式转成后缀表达式,这样更有利于计算器的运算,计算器使用的数据结构是栈。一、功能要求写一个控制台计算器,能够进行简单的加减乘除运算,支持小括号,要求使用逆波兰表达式实现。二、思路分析首先我们把输入的中缀表达式字符串存入list集合,操作集合中的元素比直接操.原创 2021-01-28 14:33:59 · 233 阅读 · 1 评论 -
java实现链表栈
文章目录前言一、链表栈简单介绍二、链表栈图解三、链表栈简单实现案例四、代码实现1.测试代码2.代码分析总结前言学会了数组栈后,链表栈就非常简单了,但这里还是做一些简单的介绍。一、链表栈简单介绍栈具有先入后出的特点,不仅可以用数组实现,也可以用链表实现,用链表的优点是栈的大小没有限制,可以不断的增长下去,数组想实现自动增长就需要多做一些工作。二、链表栈图解用链表实现一个栈非常简单,只需要在链表的基础上,使得添加元素和删除元素在链表尾部操作即可。三、链表栈简单实现案例在控制台模拟栈的入栈,出.原创 2021-01-25 21:19:38 · 159 阅读 · 0 评论 -
java实现数组栈
文章目录前言一、栈是什么?二、数组栈图解三、数组栈简单实现案例四、代码实现1.测试代码2.代码分析总结前言栈是一种基础的数据结构,也是java中必须要掌握的一个内容,理解它对我们学习java很有帮助。一、栈是什么?栈是一种运算受限的线性表,简单来讲就是它在普通数组或链表的基础上,给操作它的元素作了一些限定,使得它里面的元素具有先入后出的特点。二、数组栈图解栈由一个数组和一个top指针构成,入栈一个元素,top指针上移,出栈元素top指针就下移,通过top指针和栈本身的结构就可使得它具有先进后.原创 2021-01-24 19:01:20 · 174 阅读 · 0 评论 -
java实现环形队列
文章目录前言一、队列是什么?二、队列图解三、队列简单实现案例四、代码实现1.测试代码2.代码分析总结前言继普通队列后,本文对环形队列进行简单的实现。一、队列是什么?队列是一种特殊的线性表,其实它的底层还是数组或链表,只是在数组或链表的基础上加了一些其它的特点。二、队列图解刚开始时front指针和rear指针都指向-1下标,当入队一个元素,rear指针后移指向下标1,front指针不变,由此可见入队元素和获取队首元素均和rear有关,当出队一个元素时,front指针后移指向下一个元素,出队元素.原创 2021-01-22 18:27:01 · 50 阅读 · 0 评论 -
java实现环形队列
文章目录前言一、环形队列特点二、环形队列图解三、环形队列实现案例四、代码实现1.测试代码2.代码分析总结前言普通队列很简单,这里继续使用数组实现一个环形队列。一、环形队列特点环形队列除了具有先进先出的特点外,还可以重复入队元素到已出队元素的位置,防止入队满元素之后就无法再入队了。二、环形队列图解环形队列结构跟普通队列的结构并无区别,只是使用了取模运算使得rear指针可以重新从0开始往后移动。三、环形队列实现案例在控制台模拟队列的入队,出队,查看队列,获取队首元素等操作。四、代码实现1.原创 2021-01-22 18:44:33 · 278 阅读 · 0 评论 -
java实现普通队列
文章目录前言一、问题描述二、解决思路三、过程图解四、时间复杂度五、代码实现1.测试代码2.代码分析总结前言约瑟夫问题是数据结构中的经典算法题,这里使用java中的单向环形链表解决该问题。一、问题描述n个人围成一圈,每个人分别标注为1、2、…、n,要求从1号从1开始报数,报到m的人出圈,接着下一个人又从1开始报数,如此循环,直到剩余人数为0,输出出队序列。例如当n=25,m=12时,出队序列为12,24,11,25,14,3,18,8,1,19,13,7,5,4,6,10,17,23,20,16,2.原创 2021-01-20 19:18:08 · 203 阅读 · 0 评论