算法
文章平均质量分 75
wbj0110
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
K-MEANS算法
1. [代码][C/C++/Objective-C]代码 001#include <stdio.h>002#include <stdlib.h>003#include <math.h>004 005#define NA 4 /* 数据维数 *...原创 2013-11-11 10:10:18 · 132 阅读 · 0 评论 -
Reddit评论排名算法
与文章新闻类排名不同的事,评论类的算法可能发表时间没有什么关系。目前很多网站采用的评论排名主要有两种,即绝对好评数(好评减去差评)和好评率(好评/总评)。这两种评价方式 都存在很明显的缺陷,以下为事例:A:好评550; 差评450B:好评60;差评40C:好评1;差评0D:好评9,差评1首先是A与B比较,A的绝对好评数是550-450=100,B的绝对好评数是60-...原创 2013-09-03 09:27:23 · 478 阅读 · 0 评论 -
Hacker News的热门排名算法
Hacker News 是一家关于计算机黑客和创业公司的社会化新闻网站,由 Paul Graham 的创业孵化器 Y Combinator 创建。与其它社会化新闻网站不同的是 Hacker News 没有踩或反对一条提交新闻的选项(不过评论还是可以被有足够 Karma 的用户投反对票,或是投支持票);只可以赞或是完全不投票。简而言之,Hacker News 允许提交任何可以被理解为“任何满...原创 2013-09-03 09:28:30 · 1081 阅读 · 0 评论 -
动态规划之背包问题
话说有一哥们去森林里玩发现了一堆宝石,他数了数,一共有n个。 但他身上能装宝石的就只有一个背包,背包的容量为C。这哥们把n个宝石排成一排并编上号: 0,1,2,…,n-1。第i个宝石对应的体积和价值分别为V[i]和W[i] 。排好后这哥们开始思考: 背包总共也就只能装下体积为C的东西,那我要装下哪些宝石才能让我获得最大的利益呢?OK,如果是你,你会怎么做?你斩钉截铁的说:动态规划啊!恭喜你,...原创 2015-01-14 15:54:13 · 151 阅读 · 0 评论 -
相似图片搜索的三种算法
相似图片搜索的三种算法想必大家都用google或baidu的识图功能,上面就是我搜索冠希哥一幅图片的结果,这种搜索的核心算法有三种,都是利用信息指纹比较,这些算法都很易懂,下面分别介绍一下: 一、平均哈希算法(aHash)此算法是基于比较灰度图每个像素与平均值来实现的。步骤:1.缩放图片:为了保留结构去掉细节,去除大小、横纵比的差异,把图片统一缩放到8*8,...原创 2013-09-13 08:24:40 · 1412 阅读 · 0 评论 -
排列组合算法
题目:求(1)一组数字的全排列(2)一组数字中某几个数字的组合一、排列算法:全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3}为例说明如何编写全排列的递归算法。 如下图所示:上图中,第一层S1表示第一个数分别与第1、2、3个数交换位置,如123是1和第一个数1交换,213是1和第二个数2交换,321是1和第三个数交换。第二层S2是...原创 2013-09-18 09:14:46 · 292 阅读 · 0 评论 -
Reddit 排名算法工作原理
Reddit是个社交新闻站点,其口号是“提前于新闻发生,来自互联网的声音”。用户(也叫redditors)能够浏览并且可以提交互联网上内容的链接或发布自己的原创帖子。其他的用户可对发布的链接进行高分或低分的投票,得分突出的链接会被放到首页。另外,用户可对发布的链接进行评论以及回复其他评论者。 本文将跟大家探讨一下Reddit的文章排名算法和评论排名算法的工作原理。Reddit使用的算法也是很简...原创 2013-09-19 11:53:26 · 808 阅读 · 0 评论 -
imdb.com排名算法
IMDB.COM是目前互联网上最为权威、系统、全面的电影资料网站,里面包括了几乎所有的电影,以及1982 年以后的电视剧集。 它所特有的电影评分系统深受影迷的欢迎,注册的用户可以给任何一部影片打分并加以评述,而网站又会根据影片所得平均分、选票的数目等计算得出影片的加权平均分并以此进行TOP250(最佳250部影片)和Bottom100(最差100部影片)的排行。评选最佳250部电影...原创 2013-09-19 11:54:35 · 1005 阅读 · 0 评论 -
一个整数数组里面,除了两个数之外,其他的数字都出现了两次,写一个程序找出这两个数...
一个整数数组里面,除了两个数之外,其他的数字都出现了两次,写一个程序找出这两个数,要求算法的时间复杂度为O(n). n为数组的长度。 程序代码如下: //取二进制中首个为1的位置int findFirstOne(int value){ int pos = 0;while ((value&1) != 1){value =...原创 2014-03-29 09:30:48 · 125 阅读 · 0 评论 -
一致性hash算法(consistent hashing)
consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛;1 基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 objec...原创 2014-04-03 11:20:06 · 153 阅读 · 0 评论 -
算法杂货铺——k均值聚类(K-means)(转 )
4.1、摘要 在前面的文章中,介绍了三种常见的分类算法。分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应。但是很多时候上述条件得不到满足,尤其是在处理海量数据的时候,如果通过预处理使得数据满足分类算法的要求,则代价非常大,这时候可以考虑使用聚类算法。聚类属于无监督学习,相比于分类,聚类不依赖预定义的类和类标号的训练实例。本文首...原创 2014-04-03 11:20:22 · 282 阅读 · 0 评论 -
MySQL索引背后的数据结构及算法原理
摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。...原创 2014-04-04 09:40:36 · 142 阅读 · 0 评论 -
邻接表无向图---C语言
邻接表无向图的介绍邻接表无向图是指通过邻接表表示的无向图。上面的图G1包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"(A,C),(A,D),(A,F),(B,C),(C,D),(E,G),(F,G)"共7条边。上图右边的矩阵是G1在内存中的邻接表示意图。每一个顶点都包含一条链表,该链表记录了"该顶点的邻接点的序号"。例如,第2个顶点(顶点C)包含的链表所包含的节点的...原创 2016-08-26 16:06:01 · 512 阅读 · 0 评论 -
邻接表无向图--- C++
邻接表无向图的介绍邻接表无向图是指通过邻接表表示的无向图。上面的图G1包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"(A,C),(A,D),(A,F),(B,C),(C,D),(E,G),(F,G)"共7条边。上图右边的矩阵是G1在内存中的邻接表示意图。每一个顶点都包含一条链表,该链表记录了"该顶点的邻接点的序号"。例如,第2个顶点(顶点C)包含的链表所包含的节点的...原创 2016-08-26 16:51:37 · 1840 阅读 · 0 评论 -
一道智商测试题 月薪三万
智商测试开始:小明和小强都是张老师的学生,张老师的生日是某月某日,2人都不知道张老师的生日。 生日是下列10组中一天: 3月4日3月5日3月8日6月4日6月7日9月1日9月5日12月1日12月2日12月8日 张老师把月份告诉了小明,把日子告诉了小强,张老师问他们知道他的生日是那一天吗? 小明说:如果我不知道的话,小强肯定也不知道。 小强说:本来我也不知道,但是现...原创 2013-08-27 11:03:52 · 294 阅读 · 0 评论 -
java指纹识别+谷歌图片识别技术
Google "相似图片搜索":你可以用一张图片,搜索互联网上所有与它相似的图片。打开Google图片搜索页面:点击使用上传一张angelababy原图:点击搜索后,Google将会找出与之相似的图片,图片相似度越高就越排在前面。如:这种技术的原理是什么?计算机怎么知道两张图片相似呢?根据Neal Krawetz博士的解释,实现相似图片搜素的关键技术叫做...原创 2013-08-27 11:02:17 · 130 阅读 · 0 评论 -
海量数据处理常用思路和方法(转)
下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。1.Bloom filter适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集基本原理及要点:对 于原理来说很简单,位...原创 2013-11-18 08:35:13 · 163 阅读 · 0 评论 -
常见hash算法的原理
散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙。散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列...原创 2013-11-25 09:38:42 · 154 阅读 · 0 评论 -
淘宝数据魔方技术架构解析
淘宝网拥有国内最具商业价值的海量数据。截至当前,每天有超过30亿的店铺、商品浏览记录,10亿在线商品数,上千万的成交、收藏和评价数据。如何 从这些数据中挖掘出真正的商业价值,进而帮助淘宝、商家进行企业的数据化运营,帮助消费者进行理性的购物决策,是淘宝数据平台与产品部的使命。为此,我们进行了一系列数据产品的研发,比如为大家所熟知的量子统计、数据魔方和淘宝指数等。尽管从业务层面来讲,数据产品的...原创 2013-12-03 09:42:09 · 244 阅读 · 0 评论 -
一种高效的适宜于海量数据排序的算法
常用的排序算法: 冒泡序,快速排序,直接选择排序,堆排序,希尔排序,归并排序等;无指针分组排序算法 冒泡排序不适宜于逆序 快速排序算法能减少逆序时所消耗的扫描和数据交换次数; 堆排序对数据的有效性不敏感,适宜于较大的序列排序 直接插入算法排序对数据的有序性非常敏感,在最优情况下只需要经过n-1次比较,而最坏情况下需要n(n-1)/2次比较 ...原创 2013-07-21 01:21:11 · 175 阅读 · 0 评论 -
分治策略
分治策略是:对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。这种算法设计策略叫做分治法。 如果原问题可分割成k个子问题,1<k≤n ,且这些子问题都可解,并可利用这些子问题的解求出原问题的解,那么这种分治法就是可行的。...原创 2013-07-23 11:28:21 · 125 阅读 · 0 评论 -
算法的时间复杂度和空间复杂度
常用的算法的时间复杂度和空间复杂度 排序法最差时间分析平均时间复杂度稳定度空间复杂度冒泡排序O(n2)O(n2)稳定O(1)快速排序O(n2)O(n*log2n)不稳定O(log2n)~O(n)选择排序O(n2)O(n2)稳定O(1)二叉树排序O(n2)O(n*log2...原创 2013-07-23 14:57:28 · 101 阅读 · 0 评论 -
Hash表算法
第一部分:Top K 算法详解问题描述百度面试题: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),请你统计最热门的10个查询串,要求使用的内存不能超过1G。必备知...原创 2013-07-23 17:38:24 · 146 阅读 · 0 评论 -
大数据量算法
第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法, 比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大 的几个)...原创 2013-07-24 13:28:32 · 116 阅读 · 0 评论 -
K-Means算法--聚类算法
在数据挖掘中,K-Means算法是一种cluster analysis的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法。问题K-Means算法主要解决的问题如下图所示。我们可以看到,在图的左边有一些点,我们用肉眼可以看出来有四个点群,但是我们怎么通过计算机程序找出这几个点群来呢?于是就出现了我们的K-Means算法(Wikipedia链接)K-Mean...原创 2013-07-31 17:30:21 · 121 阅读 · 0 评论 -
如何让Java以光的速度跨线程通信?
一个比Disruptor吞吐量等性能指标更好的框架,使用Railway算法,将线程之间的消费发送参考现实生活中火车在站点之间搬运货物。目标起始于一个简单的想法:创建一个开发人员友好的,简单的,轻量级线程间的通信框架,无需使用任何锁,同步器,信号量,等待,通知以及没有队列,消息,事件或任何其它并发特定的语法或工具。只是一个Java接口接受到POJO以后在其背后实现这个通信,这个主意很类似Akk...原创 2013-12-31 14:52:43 · 171 阅读 · 0 评论 -
贝叶斯分类
第二部分、贝叶斯分类 说实话,友人刘未鹏有一篇讲的贝叶斯的文章:数学之美番外篇:平凡而又神奇的贝叶斯方法,已经把贝叶斯讲的很清晰透彻了,我再讲也是如李白看到崔颢在黄鹤楼上所提的:登黄鹤楼昔人已乘黄鹤去,此地空余黄鹤楼;黄鹤一去不复返,白云千载空悠悠。 后便大为折服,已无什兴致再提了(偶现在就是这感觉),然文章还得继续写。So,本文第二部分之大部分基本整理自未...原创 2014-06-01 10:37:32 · 312 阅读 · 0 评论 -
基数排序的一个变形应用
说起排序,大多数人在实际项目中很少自己去写一个排序,一般来说,qsort一行话就可以了。我也很少在实际项目中用到过基数排序,最近,写了一篇博客文章叫做: 字符串之全文索引 ,这篇文章的下一篇文章 要用到一个倍增算法。这个倍增算法,就可以非常巧妙的运用基数排序。作为那篇文章的一个铺垫,我专门写了一篇基数排序的文章。这篇文章里面的基数排序肯定是一个变形。大多数网上 或者 书上的基数排序都是从...原创 2013-08-21 17:33:37 · 138 阅读 · 0 评论 -
关于数据库索引设计的几个常用算法
B+、B- Tree(mysql,oracle,mongodb) 主要用在关系数据库的索引中,如oracle,mysql innodb;mongodb中的索引也是B-树实现的;还有HBase中HFile中的DataBlock的索引等等。 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search T...原创 2014-02-13 09:38:02 · 193 阅读 · 0 评论 -
邻接表无向图-- Java
邻接表无向图的介绍邻接表无向图是指通过邻接表表示的无向图。上面的图G1包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"(A,C),(A,D),(A,F),(B,C),(C,D),(E,G),(F,G)"共7条边。上图右边的矩阵是G1在内存中的邻接表示意图。每一个顶点都包含一条链表,该链表记录了"该顶点的邻接点的序号"。例如,第2个顶点(顶点C)包含的链表所包含的节点的...原创 2016-08-26 17:22:39 · 656 阅读 · 0 评论
分享