![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法系列
少主无翼
热衷并发编程,个人博客:http://vickyqi.com/
展开
-
算法系列:矩阵相乘算法的MapReduce实现
使用MapReduce方式实现矩阵相乘算法,支持map输出切分。附有代码,注释完善。原创 2013-11-28 23:42:39 · 2192 阅读 · 0 评论 -
数据结构系列——堆
堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问题设计的一种数据结构。原创 2015-11-19 13:13:20 · 2596 阅读 · 0 评论 -
排序算法系列——基数排序
基数排序不同于其他的七种排序算法,它是基于一种分配法,而非比较。基数排序属于“分配式排序”(distribution sort),基数排序法又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用。它的灵感来自于队列(Queue),它最独特的地方在于利用了数字的有穷性(阿拉伯数字只有0到9的10个)。原创 2015-08-21 12:05:09 · 1675 阅读 · 0 评论 -
排序算法系列——八大排序算法对比分析
本系列最后一篇,综合分析下前面介绍的八种排序算法的效率,以及各自的适用情况。 通知实际测试比较各排序算法的效率,并分析各个排序算法的适用场景。原创 2015-08-21 19:14:48 · 3268 阅读 · 1 评论 -
排序算法系列——归并排序
归并排序的核心思想同上一篇介绍的快速排序,都是采用了分治法的思想。其基本思想是将一个待排序序列,划分成两个子序列,然后将这两个子序列排好序之后合并,并递归的将子序列划分为更小的子序列,一直到只有一个元素的子序列,然后自底向上两两合并。原创 2015-08-20 13:42:48 · 936 阅读 · 0 评论 -
排序算法系列——快速排序
快速排序同冒泡排序,是交换排序的一种。快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。快速排序的时间复杂度是O(nlogn),比其他O(n^2)的排序算法快很多,不过实现起来还是有一定难度的。 分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问原创 2015-08-19 17:35:39 · 1282 阅读 · 0 评论 -
排序算法系列——冒泡排序
冒泡排序是交换排序的一种,其思想是从序列头部开始逐步往后遍历,每次遍历比较相邻两个元素,如果顺序不对则交换,n-1次遍历之后序列就完成了排序。原创 2015-08-18 11:31:26 · 787 阅读 · 0 评论 -
排序算法系列——堆排序
堆排序同直接选择排序一样是选择排序的一种。堆排序是借助一种数据结构——堆来完成排序,堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 什么是堆: 关于二叉树这里就不叙述了。堆(二叉堆)可以视为一棵完全的二叉树,完全二叉树的一个“优秀”的性质是,除了最底层之外,每一层都是满的,这使得堆可以利用数组来表示(普通的一般的二叉树通常用链表作为基本容原创 2015-08-14 18:39:22 · 1001 阅读 · 0 评论 -
排序算法系列——直接选择排序
前面两篇介绍了两种插入排序算法:直接插入排序和希尔排序。这篇介绍选择排序的一种:直接选择排序。从名字就可以看出直接选择排序与直接插入排序很相似,两者相同点在与都是将待排序序列分成有序区和无序区两部分,不同之处在于直接插入排序是从无序区选出一个插入到有序区合适的位置,而直接选择排序是从无序区选出最小的一个插入到有序区尾部,使得有序区保持有序。 基本思想: 一组待排序的数据,首先将其划分成两部分,一原创 2015-08-13 20:08:51 · 902 阅读 · 0 评论 -
排序算法系列——希尔排序
希尔排序同之前介绍的直接插入排序一起属于插入排序的一种。希尔排序算法是按其设计者希尔(Donald Shell)的名字命名,该算法由1959年公布,是插入排序的一种更高效的改进版本。它的作法不是每次一个元素挨一个元素的比较。而是初期选用大跨步(增量较大)间隔比较,使记录跳跃式接近它的排序位置;然后增量缩小;最后增量为 1 ,这样记录移动次数大大减少,提高了排序效率。希尔排序对增量序列的选择没有严格规原创 2015-08-13 10:55:23 · 1013 阅读 · 0 评论 -
一个简单的二叉查找树实现
/** * <p> * 二叉树 * </p> * * @author Vicky * @date 2015-8-10 */class BSTree { private Node root; private int num;// 节点数量 private int index;// 用于遍历 public BSTree() { super(原创 2015-08-10 16:17:49 · 982 阅读 · 0 评论 -
算法系列:PageRank算法的MapReduce实现
首先简单介绍PageRank的算法公式:(图片来源:http://en.wikipedia.org/wiki/Page_rank)PR(A)即A的PageRank值;d为阻尼因子,一般设为0.85;L(B)即B网站所有的出链数量(即B网站内的所有链接的数量)。所以公式的意义是:A的PageRank值=(1-d)+d*(链接到A的所有网站的PR值/该网站的所有出链数量之和)。这里首次计算原创 2014-03-01 17:28:09 · 3492 阅读 · 12 评论