
算法
文章平均质量分 75
fk543
fk5431.com
展开
-
Mahout——UserCF
基于邻域的算法是推荐系统中最基本的算法,该算法不仅在学术界得到了深入研究,而且在业界得到了广泛应用。基于邻域的算法分为两大类,一类是基于用户的协同过滤算法,另一类是基于物品的协同过滤算法。 我们先来看看基于用户的协同过滤算法,基于物品的协同过滤算法大体思路和基于用户的差不多,可以自己参考对比学习。 基于用户的协同过滤算法 每年新学期开始,刚进实验室的师弟总会问师兄相似的问题,比如转载 2016-06-30 21:34:43 · 987 阅读 · 0 评论 -
计数排序
在之前写过的插入排序,归并排序,堆排序,快排都是比较排序,它们个个元素之间的次序依赖于他们之间的比。 计数排序不是一个比较排序的算法,它的所有代码完全没有在输入元素之间的比较。计数排序的基本思想是:对没一个输入元素x,确定小于x的元素个数。用这个信息,就可以把x放到它输出数组上的位置。 #include #include using namespace std; void countsort(原创 2015-05-19 18:03:42 · 868 阅读 · 0 评论 -
快速排序
快排是对冒泡排序的一种该进。 快排的思想 快排的思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都要比另一部分的所有数据小,之后整个排序的过程可以递归实现,从而让整个数据变得有序。原创 2015-05-18 21:44:16 · 1051 阅读 · 0 评论 -
桶排序
桶排序假设输入数据服从均匀分布,平均情况下它的时间代价为O(n);它的工作原理就是将数组分到有限数量的桶子里,每个桶子在使用其他排序算法或者递归的方式使用桶排序。 假如要对大小为[1…1000]范围内的n个数进行排序,可以把桶的大小设为10,那么就会产生100个桶。把输入的n个元素依次放到与之对应的桶中,然后对每个桶在进行排序,这样我们依次输出每个桶中的数据就得到了一个排序好的序列。将元素通过恰原创 2015-05-26 19:09:03 · 1264 阅读 · 0 评论 -
基数排序之LSD
基数排序属于分配式排序,它是透过键值的部分资讯,将要排序的元素分配到某些“桶”中,打到排序的作用,基数排序属于稳定性的排序。 对于基数排序有两种实现方法:最高位优先(即MSD法):先将k1排序分组,同一组中记录,关键码k1相等,再对各组按k2排序分成自组,之后的关键码也如此操作,直到kd。在将各组连接起来,就得到一个有序序列。 最低位优先(即LSD法):先从kd开始排序,在对kd-1排序,直到原创 2015-05-26 15:13:39 · 1736 阅读 · 0 评论 -
插入排序
插入排序 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数原创 2015-04-23 20:15:52 · 997 阅读 · 0 评论 -
归并排序
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。讲已有有序的子序列合并,得到完全有序的序列:即先使每个子序列有序,再使子序列段间有序。 归并操作的工作原理(将二个有序数列合并): 第一步:申请空间,使其大小为已经排序序列之和,该空间用来存放合并后的序列。 第二步:设定两个指针,最初为之分,最初位置分别为两个已经排序序列的起始位置。 第三步:比较两个指原创 2015-04-28 11:26:44 · 777 阅读 · 0 评论 -
堆排序
堆排序是利用堆积树这种数据结构设计的一种算法。 要学习堆排序,我们首先要了解什么是二叉堆: 二叉堆是完全二叉树这这是近似完全二叉树。二叉堆可分为两种形式:最大堆和最小堆。 最大堆的性质是指某个结点的值至多与起父结点的值一样大,最小堆的性质就是指某个节点的值都大于其父结点的值。下图是一个最大堆和一个最小堆。 在堆排序中我们一般使用最大堆。我们要进行堆排序,首先需要把我们的数组转化成一原创 2015-05-10 08:35:26 · 1001 阅读 · 0 评论 -
Mahout介绍
一、Mahout的介绍 Mahout 是 一个来自Apache的、开源的机器学习的软件库。它所实现的算法归属于机器学习。现在Mahout主要关注于推荐引擎(协同过滤)、聚类和分类。 其次Mahout是可扩展的,它旨在当所处理的数据规模远大于单机处理能力时成为一种可选的机器学习工具。在现在Mahout中,这些可扩展的机器学习实现都是用java来写的,而且有些事建立在Apache的Hadoop分布原创 2016-06-20 13:24:02 · 3210 阅读 · 0 评论