数据结构与算法
算法思想+编码实现
那起舞的日子
IT男,运动控;尚力量,更尙博学;偶像曾国藩,女神白娘子;不求屌丝逆袭,但求日日精进;让每个日子起舞。
展开
-
算法34-最短增广路径的Ford-Fulkerson最大流量算法
读者盆友,下午好。这里介绍下最短增广路径的Ford-Fulkerson最大流量算法当前看这个需要对“网络流量算法”中的基本概念有所了解,这里就不啰嗦了。直奔主题哈。这是这段时间算法系列的最后一篇拉,也算是五一劳动节对自己的奖励吧,晚上和爱人一起吃夜宵。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Way...原创 2020-05-01 18:38:12 · 852 阅读 · 0 评论 -
算法33-后缀数组(初级实现)
读者盆友,下午好。这里介绍下后缀数组。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.cmh.algorithm.background;import com.cmh.algorithm.str.Quick3String;/** * 后缀数组(初级实...原创 2020-05-01 17:39:08 · 193 阅读 · 0 评论 -
算法32-B-Tree
读者盆友,清晨好。这里介绍下B-Tree。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.cmh.algorithm.background;/** * B-Tree * Author:起舞的日子 * Date: 2020/5/1 16:53 *...原创 2020-05-01 17:19:56 · 206 阅读 · 0 评论 -
算法31-基于事件模拟互相碰撞的粒子
各位读者盆友,上午好!我们终于接近《算法》的尾声拉。这里介绍看起来很酷炫的一种算法实践:模拟粒子碰撞。其实,这方面有非常广阔的使用天地,曾经在关于宇宙的记录片中就看到科学家们研究星球变化、宇宙演化就用计算你模拟的,很酷炫,真的是超酷炫!背后的技术也非常难。先看结果,酷炫吧:本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewi...原创 2020-05-01 12:29:13 · 1297 阅读 · 2 评论 -
算法30-LZW算法
读者盆友,清晨好。这里介绍下LZW算法。这是上世纪70年代末至80年代初由A.Lempel、J.Ziv 、T.Welch发明的。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.cmh.algorithm.str;import edu.princeton...原创 2020-05-01 00:14:56 · 311 阅读 · 0 评论 -
算法29-霍夫曼压缩
读者盆友,清晨好。这里介绍下霍夫曼压缩。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.cmh.algorithm.str;import edu.princeton.cs.algs4.BinaryStdIn;import edu.princeton.c...原创 2020-04-30 08:51:11 · 272 阅读 · 0 评论 -
算法28-游程编码的压缩和展开
读者盆友,清晨好。这里介绍下游程编码的压缩和展开。游程编码:Run-Length Encoding一种利用数据冗余来压缩数据的方法。具体概念读者可自行百度或学习。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.cmh.algorithm.str;im...原创 2020-04-30 08:17:58 · 978 阅读 · 0 评论 -
算法27-正则表达式的模糊匹配(grep)
读者盆友,清晨好。这里实现下正则表达式的模糊匹配。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.cmh.algorithm.str;import com.cmh.algorithm.graph.Digraph;import com.cmh.algor...原创 2020-04-30 08:15:09 · 990 阅读 · 0 评论 -
算法26-Rabin-Karp指纹字符串查找算法
各位读者盆友,中午好!直接上菜:本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.cmh.algorithm.str;import java.math.BigInteger;import java.util.Random;/** * Rabin-...原创 2020-04-29 09:57:05 · 411 阅读 · 0 评论 -
算法25-Boyer-Moore字符串匹配算法
各位读者盆友,中午好!直接上菜:本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.cmh.algorithm.str;/** * Boyer-Moore字符串匹配算法 * 启发式地处理不匹配字符 * Author:起舞的日子 * Date: 2...原创 2020-04-29 09:56:51 · 231 阅读 · 0 评论 -
算法24-Knuth-Morris-Pratt字符串查找算法
读者盆友,中午好。这里介绍子字符串查找经典算法之一:Knuth-Morris-Pratt字符串查找算法本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.cmh.algorithm.str;/** * Knuth-Morris-Pratt字符串查找算法...原创 2020-04-29 09:26:03 · 291 阅读 · 0 评论 -
算法23-暴力子字符串查找
各位读者,早上好。这里介绍下子字符串查找最初发展的思想:暴力查找本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.cmh.algorithm.str;/** * 暴力子字符串查找 * Author:起舞的日子 * Date: 2020/4/29 ...原创 2020-04-29 09:14:22 · 228 阅读 · 0 评论 -
算法22-基于单词查找树的符号表、三向单词查找树(TST)
读者盆友,早上好!这里介绍下单词查找树、三向单词查找树,后一种都是对前一种的优化,当然各自有各自的适用场景。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译文章目录一、基于单词查找树的符号表二、三向单词查找树(TST)三、源码一、基于单词查找树的符号表package com....原创 2020-04-29 08:50:54 · 387 阅读 · 0 评论 -
算法21-高位优先(MSD)的字符串排序、三项字符串快速排序
读者盆友,早上好。这里介绍下优化地位优先字符串排序算法的后2种:高位优先字符串排序三项字符串排序。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译文章目录一、高位优先的字符串排序二、三向字符串快速排序三、源码一、高位优先的字符串排序package com.cmh.algo...原创 2020-04-29 08:10:48 · 799 阅读 · 0 评论 -
算法20- 低位优先(LSD)的字符串排序
读者盆友,清晨好。我们终于来到算法的字符串环节了。时间有限,这篇博客就只介绍下低位优先的字符串排序算法。核心思想是:键索引计数。它稳定性很强,就是说键相同的元素在排序后会被聚集在一起,但是相对顺序没有变化。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.c...原创 2020-04-28 07:46:44 · 408 阅读 · 1 评论 -
算法19-货币兑换中的套汇
读者盆友,晚上好。你能想到套汇问题可以和加权无向图有关联嘛?本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.cmh.algorithm.graph;import edu.princeton.cs.algs4.StdIn;import edu.prin...原创 2020-04-27 00:24:34 · 593 阅读 · 0 评论 -
算法18-基于队列的Bellman-Ford算法、负权重环检测
读者盆友,晚上好!咱们继续介绍加权有向图,这次考虑有环、有边的权重为负的情况。文章目录一、基于队列的Bellman-Ford算法二、负权重环检测三、源码一、基于队列的Bellman-Ford算法package com.cmh.algorithm.graph;import edu.princeton.cs.algs4.Queue;import edu.princeton.cs.algs...原创 2020-04-27 00:06:37 · 437 阅读 · 0 评论 -
算法17-无环加权有向图的最短路径算法、优先级限制下的并行任务调度问题的关键路径方法
各位读者,晚上好。这篇博客继续介绍无环加权有向图方面的内容。里面用到的不少类都有变动,通过附件的方式补充。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译文章目录一、环加权有向图的最短路径算法二、优先级限制下的并行任务调度问题的关键路径方法2.1 最长路径2.2 优先级限制下的并...原创 2020-04-26 23:34:43 · 686 阅读 · 0 评论 -
算法16-加权有向图的数据结构及Dijkstra算法
读者盆友,下午好啊!终于来到图中最复杂的部分了:加权又向图。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译文章目录一、加权有向边的数据类型二、加权有向图的数据类型三、最短路径的Dijkstra算法四、源码一、加权有向边的数据类型package com.cmh.algorith...原创 2020-04-25 18:19:34 · 470 阅读 · 0 评论 -
算法15-最小生成树、Prim算法(延时实现、即时版本)、Kruskal算法
读者盆友,下午好!这里介绍下加权无向图的算法,为下一篇博客:加权有向图做铺垫。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译文章目录一、带权重的边的数据类型二、加权无向图的数据类型三、最小生成树的Prim算法的延时实现四、最小生成树的Prim算法(即时版本)五、最小生成树的Kr...原创 2020-04-25 17:28:34 · 319 阅读 · 0 评论 -
算法14-有向图的强连通分量和顶点可达性
读者盆友,下午好。这篇博客内容和上篇博客紧密相关,用到的类也是上一篇博客的内容。文章目录一、有向图的强连通分量二、顶点可达性本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译一、有向图的强连通分量package com.cmh.algorithm.graph;/** * ...原创 2020-04-25 15:31:47 · 708 阅读 · 0 评论 -
算法13-有向图的可达性、寻找有向环、拓扑排序
读者盆友,中午好!我们终于走到了有向图这种非常复杂的数据结构拉。这里介绍下:有向图的可达性、寻找有向环、有向图中基于深度优先搜索的顶点排序、拓扑排序。直接上代码:本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译文章目录一、有向图的数据结构二、有向图的可达性三、寻找有向环四、有...原创 2020-04-25 12:11:45 · 646 阅读 · 0 评论 -
算法12-连通分量、符号图、间隔的度数
读者盆友,晚上好。这里介绍下:使用深度优先搜索找出图中的所有连通分量、G是无环图嘛?、G是二分图嘛?符号图、间隔的度数本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译文章目录一、使用深度优先搜索找出图中的所有连通分量二、G是无环图吗?三、G是二分图吗?四、符号图五、间隔的度数一、...原创 2020-04-20 00:34:56 · 388 阅读 · 0 评论 -
算法11-深度优先搜索、广度优先搜索
各位看官,晚上好。这里用无向图介绍下深度优先搜索和广度优先搜索,直接上代码:本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译文章目录一、图的数据结构二、深度优先搜索三、使用深度优先搜索查找图中的路径四、使用广度优先搜索查找图中的路径一、图的数据结构package com.c...原创 2020-04-19 23:57:01 · 193 阅读 · 0 评论 -
PageRank算法核心
读者盆友,中午好,这里分享下PageRank算法的核心思想。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译S.Brin 和L.Page 发明的PageRank算法,里面非常重要的思想是:网页总数虽然很多,但是单个网页的链接并不多。背后的数学思想:矩阵*向量 -》 稀疏的...原创 2020-04-18 08:52:16 · 763 阅读 · 0 评论 -
算法9-查找总结(字典查找、索引查找(反向索引)、文件索引)
各位读者中午好!这里对之前发表的查找类型算法的应用做个总结。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译文章目录一、字典查找二、索引、反向索引查找三、文件索引四、Git源码因为实例代码需要一些.csv格式的data,不过书本官网找不到(https://algs4.cs.p...原创 2020-04-18 08:41:25 · 684 阅读 · 0 评论 -
算法8-基于拉链法、线性探测法的散列表
各位读者,晚上好。这里分享下基于拉链法、线性探测法实现的散列表。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译一、拉链法package com.cmh.algorithm;import edu.princeton.cs.algs4.SequentialSearchST;...原创 2020-04-17 00:04:08 · 411 阅读 · 0 评论 -
算法7-红黑树的插入与删除
读者盆友,晚上好。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译前几篇博客顺序的介绍了符号表的各种实现:我们首先介绍了:无序链表中顺序查找 -》 有序数组中的二分查找二分查找优缺点:二分查找优点缺点查找非常快,已知的最快的方法,复杂度在log N静...原创 2020-04-12 23:39:22 · 156 阅读 · 0 评论 -
算法6-二叉查找树高效实现符号表
读者朋友晚上好,上一篇博客介绍了基于无序链表、有序数组实现的符号表,也介绍了其中运用的二分法的局限性,本篇博客就是介绍这种弥补了该局限性同时又保留了之前算法的优点的新的算法:二叉查找树实现的符号表本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.cmh.alg...原创 2020-04-07 02:23:42 · 198 阅读 · 0 评论 -
算法5-无序链表中的顺序查找、有序数组中的二分查找
各位读者,晚上好。这几篇博客陆续介绍下算法中的查找。本篇博客介绍的关于符号表的查找算法是循序渐进的,正因为前一个方法存在的缺点,所以用后一种方法改进;当2种方法都不满意,我们需要突破,寻找新的数据结构。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译一、无序链表中的顺序查找pac...原创 2020-04-07 00:25:44 · 590 阅读 · 0 评论 -
算法4-归并、快速及优先队列
大家好,这里记录下归并排序、快速排序、优先队列的练习过程。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译一、归并排序1) 自顶向下的归并排序package com.chm.algorithms;import org.junit.jupiter.api.Test;imp...原创 2020-03-21 23:00:11 · 256 阅读 · 0 评论 -
算法3-选择、插入与希尔
文章目录一、选择排序二、插入排序三、希尔排序各位读者早上好!这里粘贴下前端时间温习的初级排序算法:选择、插入与希尔,算法虽说是基础中的基础,不过依旧无法遮挡当年发明者思想的光芒。示例代码均来自:本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译书中介绍算法的思路很好,而且验证起来...原创 2020-03-11 08:34:32 · 155 阅读 · 0 评论 -
算法2-链表实现下压堆栈、FIFO队列及Bag
文章目录一、链表实现下压堆栈二、链表实现FIFO三、链表实现背包四、总结本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译本篇博客介绍链表实现下压堆栈、FIFO及Bag. show you the code.一、链表实现下压堆栈package com.chm.algor...原创 2020-03-08 08:58:05 · 209 阅读 · 1 评论 -
算法1-背包+双栈算数表达式求值算法
文章目录一、背包Bag二、双栈算数表达式求值算法三、总结本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译一、背包Bag没用过Bag,也未在实践代码中看到过,不过这里介绍的是一种思想,直接上代码。Bag特性:无序,不能删除。package com.chm.algorit...原创 2020-03-07 23:51:06 · 201 阅读 · 0 评论