算法
PolarisHuster
java程序员,爱编程爱运动,也喜欢结交朋友
展开
-
堆排序及java实现
堆排序是一种时间复杂度为O(nlgn)的一种排序算法,该排序算法用到的就是https://blog.csdn.net/john1337/article/details/104908523所说的大顶堆,大体思路就是将大顶堆的顶跟数组最后一个有效位置交换,然后对新构成的二叉堆进行大顶堆的重构,依次类推,最后数组就是一个从小往大递增的数组。 ...原创 2020-03-18 21:50:33 · 255 阅读 · 0 评论 -
二叉堆及java实现
基础知识本文要讲的堆不是jvm内存结构中的堆,而是一种数据结构,在jdk的优先级队列就涉及到堆这种数据结构,堆可以分为大顶堆以及小顶堆两种。下面我们来看下大顶堆等效的二叉树结构,小顶堆类似,这里就不再赘述。如上图所示,大顶堆的满足以下条件:1、大顶堆等效构成的二叉树的父节点不小于其子节点1、需要注意的是大顶堆以及小顶堆只关注每个节点与其子节点的大小,至于一个节点的子节点大小则不...原创 2020-03-18 20:49:39 · 535 阅读 · 0 评论 -
哈夫曼树(郝夫曼树)及java实现
哈夫曼树是美国数学家Huffman发现的一种数据结构,该数据结构用在哈夫曼编码中,哈夫曼编码是一种压缩算法,本文主要针对的是哈夫曼树这种数据结构,哈夫曼编码将在下篇博文中涉及。在正式开始了解哈弗曼树之前有几个概念需要了解:1、路径长度:从树种一个节点到另一个节点间的分支构成两个节点之间的路径,路径上的分支数目就是路径长度,所以路径长度是针对两个节点间距离的一种描述,如下图所示:...原创 2020-03-10 22:14:27 · 318 阅读 · 0 评论 -
拓扑排序及java实现
拓扑排序是通过对有向无环图进行深度优先搜索实现的,对于一个有向无环图G来说,其拓扑排序是G中所有节点的一种线性排序,有很多生活活动都可以使用有向无环图来指明事件的优先顺序,比如下图所示的早晨起床过程:上图为某人的早晨起床涉及的一系列活动,图中标注数字为该图可能存在的一种的一种深度优先搜索方案,有些事件之间存在必然的先后顺序,比如打领带之前比如穿衬衣,系腰带之前必须穿裤子等等,有些事件之间没...原创 2020-03-01 17:04:24 · 494 阅读 · 0 评论 -
深度优先搜索及java实现
深度优先搜索是图里面一种基础的搜索算法,英文简写DFS(depth First Search),深度优先搜索采用的方式是“”耿直boy型恋爱方式”--不撞南墙不回头,本文采用的图如下图所示:下面是DFS优先搜索的java实现,涉及到图Graph类、顶点Vertex类:import java.util.ArrayList;import java.util.List;//图类pu...原创 2020-02-29 21:14:36 · 1104 阅读 · 0 评论 -
广度优先搜索BFS及java实现
广度优先搜索是图里面一种基础的搜索算法,英文简写BFS(breadth First Search),广度优先搜索能够搜索到源节点S到图中其他节点的最短距离,该方法适用于无权有向或者无权无向图中,广度优先搜索采用的方式类似二叉树的层次遍历,比如对节点V3来说,V1、V5属于第一层,V4、V6、V2属于第二层,从V3到V5的最短距离是V3->V5这条边,而不是从V3->V1-&g...原创 2020-02-23 18:27:29 · 1792 阅读 · 0 评论 -
欧几里得算法
问题导入12 和 18 的最大公约数是多少?最大公约数:最大公约数,也称最大公因数、最大公因子,指两个或多个整数共有约数中最大的一个。例如:18 与 12 的最大公约数为 6 。短除法短除法是求最大公因数的一种方法:先把每个数的因数找出来,然后再找出公因数,最后在公因数中找出最大公因数。因式分解法在初中数学题中,基本上我们就是采取因式分解或者短除法的形式来求最大...转载 2020-02-13 08:12:19 · 428 阅读 · 0 评论 -
如何用字典树进行 500 万量级的单词统计
转载自:https://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650706993&idx=2&sn=6598f9f78461b4431e2dd80e63315541&chksm=bea6e5e289d16cf4d403cc6e667f59e140915df53c27cb4805fc86631a71a2eddeb...转载 2019-01-05 15:45:09 · 311 阅读 · 0 评论