数据结构与算法
文章平均质量分 81
小小程序员1986
这个作者很懒,什么都没留下…
展开
-
排序算法 时间、空间复杂度
概念1、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度, 记为T(n)。 (2)时原创 2016-08-28 13:56:29 · 1018 阅读 · 0 评论 -
支持向量机libsvm实战入门
一、libsvm介绍 SVM支持向量机是目前比较流行的一种数据挖掘方法,能够处理较高维度,具体介绍可参考这篇博文:支持向量机通俗导论(理解SVM的三层境界) LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它原创 2016-08-28 13:57:56 · 1864 阅读 · 0 评论 -
数组顺序存储二叉树
1.完全二叉树 完全二叉树由于其结构上的特点,通常采用顺序存储方式存储。一棵有n个结点的完全二叉树的所有结点从1到n编号,就得到结点的一个线性系列。 如下图:完全二叉树除最下面一层外,各层都被结点充满了,每一层结点的个数恰好是上一层结点个数的2倍,因此通过一个结点的编号就可以推知它的双亲结点及左,右孩子结点的编号:① 当 2i ≤ n 时,结点 i 的左孩子是 2i,否则结点i没有左孩原创 2016-08-28 13:58:24 · 5737 阅读 · 0 评论 -
堆排序
一.堆介绍堆,是一棵完全二叉树,根的值大于左右子树中所有结点的值,左右子树也是堆,除此之外,对其它元素之间的大小关系(如左右子树之间元素大小关系)没有要求。这是大根堆,如果把“大于”换成“小于“,就是小根堆,这里都以大根堆为例。由于堆是完全二叉树,所以可以用数组来模拟,在数据结构上算是比较简单。用数组模拟二叉树(当然也包括堆)的话,如果根节点的下标为0的话,则对于每个结点i,其左孩子下标为2*i+原创 2016-08-28 13:58:27 · 461 阅读 · 0 评论 -
排序算法之归并排序(JAVA)
归并排序是利用递归和分而治之的技术将数据序列划分成为越来越小的半子表,再对半子表排序,最后再用递归步骤将排好序的半子表合并成为越来越大的有序序列,归并排序包括两个步骤,分别为: 1)划分子表 2)合并半子表 首先我们来讨论归并算法,归并算法将一系列数据放到一个向量中,索引范围为[first,last],这个序列由两个排好序的子表构成,以索引中点(mid)为分界线,以下原创 2016-08-28 14:04:05 · 578 阅读 · 0 评论 -
一致性Hash算法(分布式哈希)
一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:1、平衡性(Balance):平衡原创 2016-08-28 14:04:28 · 1543 阅读 · 0 评论 -
协同过滤算法 R/mapreduce/spark mllib多语言实现
用户电影评分数据集下载http://grouplens.org/datasets/movielens/1) Item-Based,非个性化的,每个人看到的都一样2) User-Based,个性化的,每个人看到的不一样对用户的行为分析得到用户的喜好后,可以根据用户的喜好计算相似用户和物品,然后可以基于相似用户或物品进行推荐。这就是协同过滤中的两个分支了,基于用户的和基于物品的协同过滤。在计算用户之间原创 2016-08-28 14:05:41 · 965 阅读 · 0 评论 -
外排序(大文件内存不够无法一次加载)
对远远大于内存的数据进行外排序,在多路比较的时候用败者树效率会更高。这个算法可以在建立倒排索引的时候使用package my.sort;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedWriter;import java.io.DataInputSt转载 2016-08-28 14:05:50 · 4518 阅读 · 0 评论 -
胜者树与败者树
胜者树与败者树 胜者树和败者树都是完全二叉树,是树形选择排序的一种变型。每个叶子结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛。 不同的是,胜者树的中间结点记录的是胜者的标号;而败者树的中间结点记录的败者的标号。 胜者树与败者树可以在log(n)的时间内找到最值。任何一个叶子结点的值改变后,利用中间结点的信息,还是能够快速地找到最值。转载 2016-08-28 14:05:56 · 595 阅读 · 0 评论