
数据结构与算法
喜欢学习的小棉袄
这个作者很懒,什么都没留下…
展开
-
回顾数据结构——使用两个栈实现一个队列和用两个队列实现一个栈
今天下午有面试,早上先来无事,写一篇博客压压惊,由于时间不多,先写个思路和实现代码,图后面有时间补上。使用两个栈实现一个队列核心思想:因为栈是先进后出的,所以自身带有翻转的光环,那队列不就是栈翻转后的结构么,因此只需要将stack1的数据给它按照栈的特性放到stack2上那就解决问题了package com.wrial.kind.design;/* * @Author Wrial * @Date Created in 11:24 2020/8/18 * @Description 使用两个栈实原创 2020-08-18 11:54:31 · 304 阅读 · 0 评论 -
复习八大排序
这篇文章用来复习一下数据结构中常提到的八大排序和三大查找算法八大排序八大排序都有哪些?八大排序按照种类可以分为以下几种:交换排序:冒泡,快排插入排序:直接插入,希尔排序选择排序:直接选择,堆排归并排序基数排序下面就按照顺序对八大排序进行复习交换类排序冒泡 // 最简化版的 public static void myBubbleSort(int[] arr)...原创 2020-03-22 11:14:58 · 215 阅读 · 0 评论 -
回顾数据结构(Java版)——排序算法的分类以及时间复杂度
排序算法分类排序算法大致可以分为内部排序和外部排序。内部排序:在内存里进行的排序插入排序:直接插入排序和希尔排序选择排序:简单选择排序和堆排交换排序:冒泡排序和快速排序归并排序:采用分治法,将子序列排序并合并基数排序:属于分配排序法,和桶排序思路相同外部排序:内存结合外存进行的排序,一般在数据量很大的情况下,无法将数据全部加载在内存里时间复杂度时间频度一个算法中语句...原创 2019-10-15 22:15:55 · 210 阅读 · 0 评论 -
回顾数据结构(Java版)——递归解决八皇后问题
八皇后是一道十分经典的数据结构与算法的题目,八皇后题目的核心思想就在一个8*8的棋盘中,每行摆放一个皇后,并且每个皇后不能同行或者同列甚至斜着偷瞄一眼也不行,下来就使用递归来解决八皇后问题使用递归来解决八皇后十分的简单,递归会不断的前进和回退,从而找出所有的解。实现步骤:使用一个数组queen来代表这个棋盘,为什么可以用一个一维数组来代表二维数组呢?很简单,因为每一行或者每一列只能放置...原创 2019-10-15 20:37:11 · 253 阅读 · 0 评论 -
回顾数据结构(Java版)——递归回溯实现迷宫
使用递归回溯实现迷宫,主要的是理解递归的含义,因此先来简单的分析一下递归。概念不多说了,直接上代码调试package com.wrial.recursion;/* * @Author Wrial * @Date Created in 10:14 2019/10/13 * @Description 阶乘 */public class Factorial { public ...原创 2019-10-15 11:24:10 · 165 阅读 · 0 评论 -
回顾数据结构(Java版)——中缀表达式实现简单计算器
自定义栈并且使用中缀表达式实现计算器,代码中有几个比较容易出错的点,比如多位数的情况,longNumber的清空等等package com.wrial.calculator;/* * @Author Wrial * @Date Created in 11:53 2019/10/10 * @Description 使用栈实现单值计算器(中缀表达式) */public class ...原创 2019-10-10 23:27:47 · 208 阅读 · 0 评论 -
回顾数据结构(Java版)——实现一个间的的数组栈
package com.wrial.stack;/* * @Author Wrial * @Date Created in 8:48 2019/10/10 * @Description 数组实现栈 */public class ArrayStackTest { public static void main(String[] args) { Stack&l...原创 2019-10-10 09:17:39 · 100 阅读 · 0 评论 -
回顾数据结构(Java版)——循环单链表实现约瑟夫环
约瑟夫环问题简述:自定义定义n个人,自定义m,谁数到m谁出列,最后剩下的一个是赢家。当然这道题的解法和变体很多,一些变体和这个的思想是一样的。我认为值得注意的就是在删除节点时需要先获取头(head)的前驱指针(rear),必须借助这个前置指针才能进行简单有效的删除,当然方法也不止是前驱指针法package com.wrial.singlelcircleinkedlist;/* * @...原创 2019-10-09 23:04:13 · 416 阅读 · 0 评论 -
回顾数据结构(Java版)——简单的单链表
实现一个简单的单链表主要需要增删改等等,其实都是差不多的,下面就写了几个比较容易混淆的也比较常用的插入:头插,尾插,按序插入删除:按id删除修改:这个更简单就没写了查:查找全部的方法,查找单个也很简单主要是要掌握插入和删除,明白什么时候需要临时变量来辅助操作就很简单了package com.wrial.linkedlist;/* * @Author Wrial * @Date ...原创 2019-10-08 23:07:23 · 123 阅读 · 0 评论 -
回顾数据结构(Java版)——写一个简单的循环队列(数组实现)
一个简单的循环队列,需要注意的几个问题关于循环运算都要用到取模循环队列的判空,判满条件要综合考虑(可以推导出来)遍历的时候,需要是由到当前的size,然后通过取模操作取出循环队列中的值codepackage com.wrial.queue;/* * @Author Wrial * @Date Created in 15:40 2019/10/8 * @Description...原创 2019-10-08 18:14:28 · 160 阅读 · 0 评论 -
回顾数据结构(Java版)——稀疏矩阵压缩和解压
稀疏矩阵的压缩和解压缩稀疏矩阵的压缩思路分析先统计在二维数组中有多少有效的的值统计出sum根据sum创建一个压缩数组然后遍历每一项有效值,并且将它记录在压缩数组中稀疏矩阵的恢复根据压缩矩阵的行和列恢复原来的矩阵然后把其他有效值填进这个新建的矩阵codepackage com.wrial.sparse_matrix;/* * @Author Wrial * ...原创 2019-10-08 15:31:33 · 417 阅读 · 1 评论 -
智力题:36匹马6个跑道无计时器选择最快的三个
36匹马分6个组,分别为A、B、C、D、E、F组.1.每个组各跑一次,取每组前三名,用a1,a2,a3,b1,b2,b3,c1,c2,c3以此类推表示2.每个组的第一名(a1到f1)拉出来跑一次(确定前三名)(1)后三名及其所在组的其余组员均被淘汰(第一都被淘汰了后边的也肯定被淘汰)(2.两战都是第一的已经提前夺冠.3.剩余两个名额和在已经夺冠的小组的第二第三和第二名小组的第一第二和第三...原创 2019-01-29 11:06:27 · 1517 阅读 · 0 评论 -
哈夫曼树压缩和解压缩
不知不觉放寒假了,时间很快,我大概是从去年的九月多开始学了java,到现在也差不多有四个月了,java基础呢也就写了几个小的管理系统,总感觉缺少点什么,当时是报着玩的心态,没想到现在成了我的主业,哈哈,要学就好好学吧,把以前四个月没好好学习的时间给补回来以前的文章质量差到我都看不下去,本来是留给自己复习用的,发现自己复习也没有欲望看哈哈哈哈哈,这个要改进改进今天的主题是哈夫曼树的编码,译码...原创 2019-01-17 20:53:12 · 2320 阅读 · 0 评论