随笔分类 -  算法基础学习

摘要:文章目录 1.什么是队列? 2.应用 3.Java实现 3.1 基于链表的实现 1.什么是队列? 队列和栈不同,它是一个先进先出表,它的特性是先进先出,先被存进的元素先被取出。 我们可以使用数组去实现队列,但是对于数组实现而言,队列用链表来实现更为简单。 2.应用 操作系统的顺序任务调度 模拟现实世 阅读全文
posted @ 2023-03-31 09:53 文牧之 阅读(18) 评论(0) 推荐(0) 编辑
摘要:文章目录 1.什么是栈? 2.栈的应用场景 3.栈的具体实现 3.1 基于简单数组的实现 3.2 动态数组的实现 3.3 链表的实现 3.4 Java动态数组实现栈结构 4 项目地址 1.什么是栈? 栈是一个有序的线性表,只能在栈顶进行操作插入和删除操作。所以也叫先进后出表。 2.栈的应用场景 符号 阅读全文
posted @ 2023-03-30 10:34 文牧之 阅读(16) 评论(0) 推荐(0) 编辑
摘要:文章目录 1. 循环链表 1.1 什么是循环链表? 2.循环链表的实现 2.1 节点定义 2.2 操作方法定义 2.2.1 计算链表长度 2.2.2 打印链表内容 2.2.3 获取链表最后一个节点 2.2.4 插入节点 2.2.5 删除指定位置的节点 3.循环链表测试 3.1 编写循环链表自动生成方 阅读全文
posted @ 2022-01-05 20:23 文牧之 阅读(122) 评论(0) 推荐(0) 编辑
摘要:文章目录 1.什么是双向链表? 1.1 双向链表基本结构 1.2 实现对双向链表基本的增删改查 1.2.1 插入方法 1.2.2 如何删除链表的元素 1.2.3 如何得到指定位置的值 2 项目地址(内含完整测试实例) 1.什么是双向链表? 双向链表由多个节点组成,每个 节点(用于存储数据) 通过pr 阅读全文
posted @ 2022-01-04 21:14 文牧之 阅读(35) 评论(0) 推荐(0) 编辑
摘要:文章目录 1.几种基本的算法思想 1.1 分治法 1.1.1 分治法概述 1.1.2 分治法递归问题实例学习 1.2.动态规划法 1.2.1 动态规划法概述 1.2.2 动态规划问题实例学习 1.3.回溯法 1.3.1 回溯法概述 1.3.2 回溯法问题实例学习 1.4.分支限界法 1.4.1 分支 阅读全文
posted @ 2021-12-28 16:53 文牧之 阅读(58) 评论(0) 推荐(0) 编辑
摘要:上项目地址 https://gitee.com/yan-jiadou/study/tree/master/Java%E5%8A%A8%E6%89%8B%E5%81%9A%E4%B8%80%E5%81%9A/src/main/java/SortStudy 测试方法已经写了,采用的是自动测试,你只需调用 阅读全文
posted @ 2021-12-25 14:02 文牧之 阅读(10) 评论(0) 推荐(0) 编辑
摘要:一.为什么压缩存储? 1.在计算机中矩阵用二维数组来表示是最自然的方式。 2.但是在数值分析中经常出现一些阶数很高的矩阵,同时在矩阵中有很多值相同的元素或者为0的元素。 3.所以有时我们为了节省空间需要对这些矩阵进行压缩存储。 4.当我们想要压缩的矩阵的数值分布具有一定的规律时我们才可能去实现压缩存 阅读全文
posted @ 2020-05-06 15:34 文牧之 阅读(52) 评论(0) 推荐(0) 编辑
摘要:一,什么是并查集?(也叫等价类) 并查集ADT(抽象数据结构)可以表示一组无序元素,可用来解决等价问题。 二,等价类中的一些操作: 1.创建一个等价类 2.查找等价类 3.合并等价类。 三,等价类的一些应用 1.表示网络的连通性 2.图像处理 3.查找最近公共祖先 4.定义有限状态自动机的等价性 5 阅读全文
posted @ 2020-04-06 15:20 文牧之 阅读(17) 评论(0) 推荐(0) 编辑
摘要:一.什么是最小生成树? 阅读全文
posted @ 2020-04-01 10:35 文牧之 阅读(1) 评论(0) 推荐(0) 编辑
摘要:本博客只是初级思维学习笔记,本人尚未实现其中的代码,其中的代码可能存在错误!!。 阅读全文
posted @ 2020-04-01 10:30 文牧之 阅读(1) 评论(0) 推荐(0) 编辑
摘要:一.什么是拓扑排序? 它是一个在有向无环图中对顶点的排序,在此图中,每个顶点都排在所有以它为起点的的相邻节点之前。 2.具体操作步骤: a.计算所有顶点的入度 b.将所有入度为0的顶点放入队列中。 c.当队列不为空时,从队列中弹出顶点v且将v的左右相邻顶点的入度减1 d.一旦某个顶点的入度为0,将其 阅读全文
posted @ 2020-04-01 10:18 文牧之 阅读(16) 评论(0) 推荐(0) 编辑
摘要:文章目录 1.什么是计数排序? 2.基本思想 3.Java实现 1.什么是计数排序? 计数排序的应用场景是假设n个输入元素中的每一个都是在0到k区间内的整数。 排序的时间复杂度为O(n),但是空间复杂度是不稳定的,为O(k),也就是说,空间复杂度取决于k 此排序的一个重要的特性是稳定,它的时间复杂度 阅读全文
posted @ 2020-03-31 18:48 文牧之 阅读(10) 评论(0) 推荐(0) 编辑
摘要:文章目录 归并排序1.基础理论1.1 基本描述 2. Java代码实现 归并排序 1.基础理论 1.1 基本描述 归并排序以最坏时间复杂度O(N log N)运行,它所使用到的比较次数几乎是最优的,它是递归算法的一个很好的实例。 这个排序算法中基本的操作就是合并两个已经排序的表。 因为输入的两个表是 阅读全文
posted @ 2020-03-31 14:08 文牧之 阅读(5) 评论(0) 推荐(0) 编辑
摘要:一.什么是宽度遍历? 我们可通过下图理解: 下面我们用代码重现上面的情况: 二.代码实现: //辅助队列 class ArrayQueue{ private int front; private int rear; private int capacity; private int [] array 阅读全文
posted @ 2020-03-30 16:30 文牧之 阅读(0) 评论(0) 推荐(0) 编辑
摘要:一.什么是深度遍历? 我们可以通过下面的图深入了解: 下面我们用代码重现上面的场景: 二.代码实现: import java.util.Stack; class Vertex{ public char label;//节点信息 public boolean visited;//存储节点是否被访问信息 阅读全文
posted @ 2020-03-30 15:58 文牧之 阅读(7) 评论(0) 推荐(0) 编辑
摘要:一.什么是图? 有几个节点,节点之间有线连着,这样的情景就叫图: 二.由于节点之间的连接方式的不同,我们诞生了以下含义: 1.有向边:从一个节点到另一个节点的连接是单向的,我们称两个节点之间的线为有向边。 2.无向边: 从一个节点到另一个节点的连接是双向的,我们称两个节点之间的线为无向边。 3.有向 阅读全文
posted @ 2020-03-30 13:52 文牧之 阅读(9) 评论(0) 推荐(0) 编辑
摘要:一.基本思想: 首先将所有元素(从未排过序的数组)插入堆中,然后从堆的根节点开始提取并且将最小的元素放到根节点然后堆化,直到完毕。 时间复杂度为O(nlogn). 二,排序代码如下: //堆排序 int[] Heapsort(Heap h,int A[],int n) { int i,temp; B 阅读全文
posted @ 2020-03-27 10:17 文牧之 阅读(2) 评论(0) 推荐(0) 编辑
摘要:1.什么是堆? 堆是一颗具有特定性质的完全二叉树。 特定性质是:所有节点的值必须大于或等于(或小于或等于)其孩子节点的值。 2.堆的类型。 最小堆:节点的值必须小于或等于孩子节点的值。 最大堆:节点的值必须大于或等于孩子节点的值。 3.堆的java实现 以最大堆为例: 我们使用数组来实现。 那么堆的 阅读全文
posted @ 2020-03-26 20:26 文牧之 阅读(6) 评论(0) 推荐(0) 编辑
摘要:一.什么是平衡二叉搜索树? 在二叉搜索树的基础上: 每个左右子树的高度差为0,此时的二叉树称为完全平衡二叉搜索树。 每个左右子树的高度差不大于1时,此时的二叉树称为AVL树。(就是平衡二叉搜索树) 二.旋转 当树的结构发生变化时(插入,删除节点),它可能变得不符合AVL结构了,所以我们需要旋转来保证 阅读全文
posted @ 2020-03-25 10:45 文牧之 阅读(10) 评论(0) 推荐(0) 编辑
摘要:一.什么是N叉树? 就是节点的孩子没有限制的树。 例如: 那么怎么表示这种树呢? 有一种方法可以合理的表示它: 1.同一个父母节点的孩子从左到右排列。 2.父母节点只指向第一个孩子节点。 如图: 它的节点定义和二叉树一样: class BinaryTreeNode{ 阅读全文
posted @ 2020-03-23 14:27 文牧之 阅读(2) 评论(0) 推荐(0) 编辑

more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示