scala 实现算法】的更多相关文章

快排算法很经典,今天用scala的函数式思维来整理一下并实现: def qsort(list: List[Int]):List[Int]=list match { case Nil=>Nil case ::(pivot,t)=>qsort(t.filter(_<=pivot)) ++ List(pivot) ++ qsort(t.filter(_>pivot)) } println(qsort(List(1,32,4,5,2,3,5,6,7,33))) ** ok ** 以下是C语…
Stream(immutable) Stream是惰性列表.实现细节涉及到lazy懒惰求值.传名参数等等技术(具体细节详见维基百科-求值策略). Stream和List是scala中严格求值和非严格求值两个代表性不可变函数式数据结构. 考虑字符串拼接的表达式"foo"+"bar"的到"foobar",空串""就是这个操作的单位元(identity,数学中又称幺元),也就是说s+""或者""…
topK问题是指从大量数据中获取最大(或最小)的k个数,比如从全校学生中寻找成绩最高的500名学生等等. 本问题可采用小根堆解决.思路是先把源数据中的前k个数放入堆中,然后构建堆,使其保持堆序(可以简单的看成k次insert操作).然后从源数据中的第k个数据之后的每个元素与堆的根节点(小根堆得root是最小的)比较,如果小于root,那么直接pass;如果大于,则执行headp.deleteMin,然后把该元素插入堆中并再次保持堆序.保持堆序需要涉及上滤与下滤的过程. 样例为: object M…
一个例子,比如ab+cde+**,这是一个后缀表达式,那么如何转换为一棵表达式树呢? 先上代码,再解释: object Main extends App{ import Tree.node def isOperator(char: Char):Boolean="+-*/".contains(char) val stack=new Stack[Tree] val str="ab+cde+**" str.foreach(ch=>{ isOperator(ch) m…
快速排序 def sort(xs: Array[Int]): Array[Int] = if (xs.length <= 1) xs else { val pivot = xs(xs.length / 2) Array.concat( sort(xs filter (pivot >)), xs filter (pivot ==), sort(xs filter (pivot <))) }…
Pi的计算方式有很多,本文主要是通过Spark在概论统计的方法对Pi进行求解: 算法说明: 在边长为R的正方形中,其面积为R^2,而其内接圆的面积为pi * R^2 /4 ,圆的面积与正方形的面积比为 Pi / 4 . 存在一个点,随机的往这个正方形中掉落,而且这个点掉落到正方形的每个位置的概率是相同的,当无数多个点掉落在这个正方形时,那么这个点在圆的个数x与在正方形上的个数y应该为圆的面积与正方形的面积之比Pi /4. scala编程算法: import org.apache.spark.sq…
算法的概念不做过都解释,google一下一大把.直接贴上代码,有比较详细的注释了. 主程序: import scala.io.Source import scala.util.Random /** * @author vincent * */ object LocalKMeans { def main(args: Array[String]) { val fileName = "/home/vincent/kmeans_data.txt" val knumbers = 3 val ra…
梯度迭代树(GBDT)算法原理及Spark MLlib调用实例(Scala/Java/python) http://blog.csdn.net/liulingyuan6/article/details/53426350 梯度迭代树 算法简介: 梯度提升树是一种决策树的集成算法.它通过反复迭代训练决策树来最小化损失函数.决策树类似,梯度提升树具有可处理类别特征.易扩展到多分类问题.不需特征缩放等性质.Spark.ml通过使用现有decision tree工具来实现. 梯度提升树依次迭代训练一系列的…
scala实现彩票算法 (1)具体实现代码如下: package hw1 import scala.util.control._ /** * @author BIGDATA */ object Cp { var input=new Array[Int](7) var cp=new Array[Int](7) var level=0 def main(args:Array[String]):Unit={ //var num=readInt buy() printUsr(); kaijiang();…
朴素贝叶斯 算法介绍: 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法. 朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,在没有其它可用信息下,我们会选择条件概率最大的类别作为此待分类项应属的类别. 朴素贝叶斯分类的正式定义如下: 1.设 为一个待分类项,而每个a为x的一个特征属性. 2.有类别集合 . 3.计算 . 4.如果 ,则 . 那么现在的关键就是如何计算第3步中的各个条件概率.我们可以这么做: 1.找到一个已知分类的待分类项集合,这…