![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
绝影神
这个作者很懒,什么都没留下…
展开
-
图的搜索之广度优先
广度优先每次搜索·,搜索所有可达的点思路分析从起点出发查找所有可达的点。并加入队列出队元素查找所有可达的点。并加入队列继续第二步操作代码再现public class Bfs { //地图的大小 int n,m; //定义地图,如果值为0表示节点无障碍,值为1表示节点有障碍 int[][] data = null; //标记已经走过的节点 boolean[][] m...原创 2019-12-28 16:37:41 · 105 阅读 · 0 评论 -
图的搜索之深度优先
深度优先不撞南墙不回头思路分析代码再现/** * 深度优先--不撞南墙不回头 * * 递归调用 * * @author Bamboo * */public class Dfs { //地图的大小 int n,m; //定义地图,如果值为0表示节点无障碍,值为1表示节点有障碍 int[][] data = null; //标记已经走过的节点 boole...原创 2019-12-28 16:27:30 · 88 阅读 · 0 评论 -
堆排序
堆排序指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树思路分析先建立一个大顶堆然后将堆顶元素与最后一个元素做交换。(此时已经排除了最大的元素。)然后在对剩下的元素做最大堆.再将堆顶元素与倒数第二个元素做交换。代码再现public class HeapSort { /**...原创 2019-12-28 15:36:14 · 97 阅读 · 0 评论 -
归并排序
归并排序归并排序简介并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。思路分析将要排序的数据对半分 意为左边的数据和右边的数据重复第一步操作直到只有一个数将左边的数据和右边的数据进行排序代码再现p...原创 2019-12-28 14:34:16 · 93 阅读 · 0 评论 -
经典排序之topK问题
经典排序之topK问题现代大数据环境下。对于大数据的处理很平常。场景还原对于给定的1亿或者无上限的数据。排序出top 50的数据。问题分析如此大的数据让其全部加载到内存中再次排序肯定是不行的。内存不够啊再资源有限的情况下,使用分布式计算也是很有限的,因为小公司基本没可能方案分析对此有人给出了一个解决方案:堆排序。堆树有一个很大的特点,堆顶要么最大,要么最小。新增一个堆顶元...原创 2019-12-27 17:25:19 · 192 阅读 · 0 评论 -
hash算法Fnv-1a
hash算法fnvFNV哈希算法 取自于1991年Glenn Fowler和 Phong Vo向IEEE POSIX P1003.2委员会发送评论者意见的想法 。在随后的投票中: Landon Curt Noll 对他们的算法进行了改进。一些人尝试了此哈希,发现它工作得很好。在发给 Landon的电子邮件中,他们将其命名为`` Fowler / Noll / Vo ''或FNV哈希FN...原创 2019-12-18 16:58:51 · 2328 阅读 · 0 评论 -
经典算法之斐波那契数列
算法:斐波那契数列斐波那契数列斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2...原创 2019-12-06 15:08:51 · 526 阅读 · 0 评论 -
算法集锦
算法集锦算法冒泡排序选择排序插入排序快速排序shell排序源码算法冒泡排序链接选择排序链接插入排序链接快速排序链接shell排序链接源码github链接...原创 2019-09-12 10:10:36 · 136 阅读 · 0 评论 -
shell排序
shell排序shell排序简介源代码执行结果分析shell排序简介希尔排序是一种插入排序算法,它出自D.L.Shell,因此而得名。Shell排序又称作缩小增量排序。Shell排序的执行时间依赖于增量序列。简单的说shell排序就是一种分组增量排序,通过首先对元素分组,再对个分组元素排序,最后对所有元素排序源代码public class ShellSort { public stat...原创 2019-09-12 09:49:38 · 227 阅读 · 0 评论 -
快速排序
快速排序快速排序简介源代码执行结果分析快速排序简介通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列源代码public class QuickSort { public static void sort(int[] data){ int...原创 2019-09-09 17:00:19 · 104 阅读 · 0 评论 -
插入排序
插入排序插入排序简介源代码执行结果分析插入排序简介插入排序(Insertion sort)是一种简单直观且稳定的排序算法。如果有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法源代码public class InsertionSort { public static void sort(in...原创 2019-09-09 14:11:42 · 124 阅读 · 0 评论 -
选择排序
选择排序选择排序简介源代码执行结果分析选择排序简介选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。源代码public class ...原创 2019-09-09 13:38:30 · 424 阅读 · 1 评论 -
冒泡排序
冒泡排序冒泡排序简介源代码执行结果分析冒泡排序简介它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成源代码public class BubbleSort { public static void sort(int[] data){ ...原创 2019-09-09 11:04:23 · 80 阅读 · 0 评论