数据结构与算法
文章平均质量分 90
稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序、基数排序(桶排序)、堆排序、排序速度分析、二分查找、插值查找
java冯坚持
1、专注Java开发、定制、远程、文档编写,还专注组件开发、前端vue-react开发、技术博客沉淀、技术研究等;
有热爱的技术同学欢迎来投稿、交流,一起学习,一起在code的海洋里遨游~
2、鄙人非常有兴趣组建一个集对开发有兴趣的志同道合的朋友一起合作、交流、沉淀;向CTO、合伙人出发~
3、有兴趣的朋友可以私信,每天集中下午17:00-18:00集中回复。
展开
-
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
最短路径的算法有两个,Dijkstra算法 和 Floyd算法。Dijkstra算法 解决的是单源 最短路径问题。Floyd算法解决的是多源 最短路径问题,并且可以处理负权图。今天要讲的就是Dijkstra算法。(大写的i),进java交流群讨论互联网+技术。可索要PPT等资料。其他资料,建议先看本篇博客。Dijkstra算法和Floyd算法:https://blog.csdn.net/weixin_43872728/article/details/100662957。原创 2023-08-26 00:28:30 · 676 阅读 · 0 评论 -
动态规划算法学习四:最大上升子序列问题(LIS:Longest Increasing Subsequence)
动态规划算法学习四:最大上升子序列问题(LIS:Longest Increasing Subsequence)原创 2022-11-23 22:20:44 · 794 阅读 · 0 评论 -
动态规划算法学习一:DP的重要知识点、矩阵连乘算法
动态规划算法学习一:DP的重要知识点、矩阵连乘算法原创 2022-11-21 21:31:48 · 1004 阅读 · 0 评论 -
动态规划算法学习三:0-1背包问题
动态规划算法学习三:0-1背包问题原创 2022-11-23 15:37:52 · 2772 阅读 · 0 评论 -
动态规划算法学习二:最长公共子序列
动态规划算法学习二:最长公共子序列原创 2022-11-22 10:02:52 · 1600 阅读 · 0 评论 -
北京化工大学历年真题整理:没考上,换了个学校,但还是在北京~哈哈(总结的算法题,有缘人自取之)
北京化工大学历年真题整理:没考上,换了个学校~原创 2022-06-29 21:52:46 · 1193 阅读 · 0 评论 -
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
文章目录前言一、为什么要有图二、图的举例说明三、图的常用概念四、图的表示方式4.1 邻接矩阵4.2 邻接表五、图的快速入门案例六、图的深度优先遍历介绍6.1 图遍历介绍6.2 深度优先遍历基本思想6.3 深度优先遍历算法步骤6.4 核心代码七、图的广度优先遍历7.1 广度优先遍历基本思想7.2广度优先遍历算法步骤7.3 核心代码八、图的代码汇总8.1 Graph图类8.2 GraphMain测试类8.3 测试结果前言一、为什么要有图前面我们学了线性表和树线性表局限于一个直接前驱和一个直接后继的关系原创 2020-05-19 10:58:57 · 428 阅读 · 0 评论 -
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
文章目录前言一前言一原创 2020-05-18 23:40:43 · 261 阅读 · 0 评论 -
数据结构与算法学习二零:二叉排序树(BST)、平衡二叉树(AVL)
文章目录前言一、二叉排序树1.1 先看一个需求1.2 解决方案分析1.3 叉排序树介绍1.4 二叉排序树创建和遍历1.5 二叉排序树的删除1.6 代码实现1.6.1 Node结点类1.6.2 BinarySortTree 二叉排序树类1.6.3 BinarySortTreeMain测试类1.7 测试结果二、二叉平衡树1.5 代码实现1.5.1 Node节点类1.5.2 AVLTree二叉平衡树类1.5.3 AVLTreeMain测试类1.6 测试结果前言一、二叉排序树1.1 先看一个需求给你一个数列原创 2020-05-18 23:38:14 · 305 阅读 · 0 评论 -
数据结构与算法学习十九:赫夫曼树树(图文很详细)、赫夫曼编码、应用实践(数据压缩、数据解压)、这一章自我感觉看懂就好。。。
文章目录前言一、赫夫曼树1.1 基本介绍1.2 赫夫曼树的概念1.3 思路图解分析1.3.1 案例1.3.2 步骤分析1.3.3 图文分析1.4 代码实现1.4.1 Node 节点类1.4.2 HuffmanTree赫夫曼树类二、赫夫曼编码2.1 基本介绍2.2 原理剖析2.2.1 通信领域中信息的处理方式1-定长编码2.2.2 通信领域中信息的处理方式1-变长编码2.2.3 通信领域中信息的处理方式1-赫夫曼编码前言一、赫夫曼树1.1 基本介绍给定 n 个权值作为 n 个叶子结点,构造一棵二叉原创 2020-05-18 13:41:56 · 607 阅读 · 0 评论 -
数据结构与算法学习十八:堆排序
文章目录前言一、堆排序基本介绍二、堆排序基本思想三、思路图解3.1 步骤一 构造初始大顶堆。3.2 步骤二 将堆顶元素与末尾元素进行交换3.3 再简单总结下堆排序的基本思路四、堆排序代码实现4.1 代码实现4.2 测试结果前言一、堆排序基本介绍堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为 大顶堆, 注意 : 没有要求结点原创 2020-05-17 23:21:52 · 414 阅读 · 0 评论 -
数据结构与算法学习十七:顺序储存二叉树、线索化二叉树
文章目录一、顺序储存二叉树1.1 概念1.2 特点1.3 关系1.4 案例1.5 代码实现1.5.1 ArrayBinaryTree 二叉树类1.5.2 T2_ArrayBinaryTreeMain 测试类1.5.3 测试结果1.6 ** 实际应用 **二、线索化二叉树(学的不太好,没深入)2.1 先看一个问题2.1 线索二叉树基本介绍2.2 案例2.3 代码实现2.3.1 HeroNode 结点类2.3.2 ThreadedBinaryTree 线索化二叉树2.3.3 T3_ThreadedBinary原创 2020-05-17 22:34:57 · 278 阅读 · 0 评论 -
数据结构与算法学习十六:树的知识、二叉树、二叉树的遍历(前序、中序、后序、层次)、二叉树的查找(前序、中序、后序、层次)、二叉树的删除
文章目录一、树的介绍1.1 为什么需要树这种数据结构1.1.1 数组存储方式的分析1.1.2 链式存储方式的分析1.1.3 树存储方式的分析1.2 基本介绍1.3 树的常用语二、二叉树定义三、二叉树的操作3.1 二叉树遍历说明3.2 实例3.3 二叉树遍历3.3.1 HeroNode.java 结点3.3.2 BinaryTree.java 二叉树3.3.3 T1_BinaryTreeMain.java 测试类3.4 二叉树的查找一、树的介绍1.1 为什么需要树这种数据结构1.1.1 数组存储方式的分原创 2020-05-16 21:53:09 · 496 阅读 · 0 评论 -
数据结构与算法学习十五:哈希表
文章目录前言一、前言一、原创 2020-05-02 14:38:22 · 261 阅读 · 0 评论 -
数据结构与算法学习十五:常用查找算法介绍,线性排序、二分查找(折半查找)算法、差值查找算法、斐波那契(黄金分割法)查找算法
文章目录前言一、查找算法前言一、查找算法原创 2020-05-02 14:03:20 · 963 阅读 · 0 评论 -
数据结构与算法学习十四:常用排序算法总结和对比
文章目录前言一、排序算法的比较图二、相关术语解释前言一、排序算法的比较图二、相关术语解释稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂度: 一个算...原创 2020-05-02 13:15:49 · 236 阅读 · 0 评论 -
数据结构与算法学习十三:基数排序,以空间换时间的稳定式排序,速度很快。
文章目录前言一、前言一、原创 2020-05-02 13:02:56 · 764 阅读 · 0 评论 -
数据结构与算法学习十二:希尔排序、快速排序(递归、好理解)、归并排序(递归、难理解)
文章目录前言一、希尔排序1.1 简单插入排序存在的问题1.2 基本介绍1.3 思路分析1.4 代码实现1.5 测试结果二、快速排序2.1 基本介绍2.2 思路分析2.3 代码实现2.4 测试结果三、归并排序3.1 基本介绍3.2 思路分析3.3 代码实现3.4 测试结果前言上节的三个排序算法:冒泡、选择、插入,较为简单,好理解,使用比较、交换的思想。但也都是基础。这节的三个排序算法:希尔、...原创 2020-04-27 22:14:39 · 771 阅读 · 0 评论 -
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
文章目录前言一、冒泡排序1.1 基本介绍1.2 演示冒泡过程的例子(图解)1.3 代码实现1.4 测试结果二、选择排序2.1 基本介绍2.2 思路分析2.2.1 选择排序思想2.2.2 思路分析图2.3 代码实现2.4 测试结果三、插入排序3.1 基本介绍3.2 思路分析3.2.1 插入排序思想3.2.2 插入排序思路图3.3 代码实现3.4 测试结果前言一、冒泡排序1.1 基本介绍冒泡排...原创 2020-04-25 22:52:55 · 433 阅读 · 0 评论 -
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
文章目录前言一、排序算法介绍1.1 排序分类二、算法的时间复杂度2.1 度量一个程序(算法)执行时间的两种方法2.2 时间频度2.2.1 基本介绍2.2.2 举例说明-基本案例2.2.3 举例说明-忽略常数项2.2.4 举例说明-忽略低次项2.2.5 举例说明-忽略系数2.3 时间复杂度2.4 常见的时间复杂度2.4.1 常数阶 O(1)2.4.2 对数阶 O(log2n)2.4.3 线性阶 O(...原创 2020-04-24 22:50:15 · 454 阅读 · 0 评论 -
数据结构与算法学习九:学习递归。递归的经典实例:打印问题、阶乘问题、递归-迷宫问题、八皇后问题
文章目录前言一、递归简介前言这里学的时候,自我感觉有点难,逻辑有点混乱,学了后面的排序,再来重复学一遍。一、递归简介原创 2020-04-24 20:49:53 · 436 阅读 · 0 评论 -
数据结构与算法学习八:前缀(波兰)表达式、中缀表达式、后缀(逆波兰)表达式的学习,中缀转后缀的两个方法,逆波兰计算器的实现
文章目录前言一、前缀(波兰)表达式学习1.1 前缀表达式介绍1.2 前缀表达式的计算机求值1.3 后话二、中缀表达式学习三、后缀(逆波兰)表达式学习3.1 后缀表达式介绍3.2 后缀表达式的计算机求值3.3 构成方法3.3.1 PolandNotation类3.3.2 测试结果3.4 后话四、中缀表达式 转 后缀表达式4.1 方法一【超级简单,用于做题】4.2 方法二 代码实现中缀转后缀4....原创 2020-04-23 22:25:17 · 1104 阅读 · 0 评论 -
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
文章目录前言一、栈1.1 栈的介绍1.2 栈的应用实例【重点】1.3 栈的应用场景二、数据模拟栈三、单链表模拟栈四、栈实现综合计算器前言一、栈1.1 栈的介绍栈的英文为(stack)栈是一个 先入后出 (FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,...原创 2020-04-22 12:32:46 · 365 阅读 · 0 评论 -
数据结构与算法学习六:单向环形链表应用实例的约瑟夫环问题
文章目录前言一、约瑟夫介绍二、单向环形链表三、思路分析3.1 约瑟夫环的分析3.2 环形链表构建分析3.3 约瑟夫问题-小孩出圈思路四、代码实现4.1 代码结构4.2 Boy 节点类4.3 CircleSingleLinkedList: 单向环形链表类4.4 JosepfuMain 测试类4.5 测试结果前言一、约瑟夫介绍Josepfu(约瑟夫、约瑟夫环)问题为:设编号为1,2,… n的...原创 2020-04-21 22:13:41 · 397 阅读 · 0 评论 -
数据结构与算法学习五:双链表的增、删、改、查
文章目录前言一、双链表的应用实例二、单链表的缺点分析三、双链表增删改查思路四、代码实现4.1 项目结构4.2 HeroNode.java 节点类4.3 DoubleLinkedList.java 双链表类4.4 DoubleLinkedListMain.java 测试类4.5 测试结果前言一、双链表的应用实例使用带head头节点的双向链表实现 - 水浒传英雄排行榜二、单链表的缺点分析...原创 2020-04-21 21:44:09 · 294 阅读 · 0 评论 -
数据结构与算法学习四:单链表面试题,新浪、腾讯【有难度】、百度面试题
二、 单链表面试题3.3单链表面试题(新浪、百度、腾讯)1) 求单链表中有效的个数/** * 方法描述:获取到单链表的节点的个数(如果是带头结点的链表,需求不统计头节点) * * @param head 链表的头节点 * @return 返回的就是有效节点的个数 */ public static int getLength(HeroNode head) { if ...原创 2020-04-19 22:52:21 · 426 阅读 · 0 评论 -
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
文章目录前言一、稀疏数组1.1 实际需求1.2 基本介绍1.3 应用实例1.4 代码如下1.5 截图如下二、队列前言数据结构学习的第一节便是 稀疏数组和队列。一、稀疏数组1.1 实际需求编写的五子棋程序中,有存盘退出和续上盘的功能。实现该功能可以使用二维数组进行存储棋盘,黑子为1,蓝子为2,如图所示:但是该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据.->因此...原创 2020-04-18 22:15:48 · 513 阅读 · 0 评论 -
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
文章目录前言一、数据结构1.1 线性结构1.2 非线性结构二、数据结构与算法2.1 两者之间的关系2.2 两者重要性三、实际编程中遇到的问题3.1 单链表问题3.2 五子棋问题3.3 约瑟夫(Josephu)问题(丢手帕问题)3.4 其他常见算法问题四、几个经典的算法面试题()4.1 字符串匹配4.2 汉诺塔游戏4.3 八皇后问题4.4 马踏棋盘算法前言2020.4.18日开始学习数据结构与...原创 2020-04-18 16:59:36 · 525 阅读 · 0 评论 -
数据结构与算法学习三:单链表的增加(添加到链尾,按顺序添加)、删除、查询、修改。
文章目录前言一、稀疏数组二、数组队列前言一、稀疏数组二、数组队列原创 2019-12-25 21:26:04 · 1006 阅读 · 0 评论