算法
文章平均质量分 74
送人玫瑰手留余香
这个作者很懒,什么都没留下…
展开
-
MySql索引算法原理解析(通俗易懂,只讲B-tree)
刚开始学习的时候,百度去查,但发现好多说得太复杂不好理解,结合各个文章总结一下(建议大概看文字,不理解不要紧,然后再看图的执行步骤然后在结合文字,这样一切就清晰好多) B-tree,B是balance,一般用于数据库的索引。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。而B+tree是B-tree的一个变种,大名鼎鼎的MySQL就普遍使用B+tree实现其原创 2014-11-10 22:21:08 · 2060 阅读 · 0 评论 -
随机数算法
软件实现的算法都是伪随机算法,随机种子一般是系统时间在数论中,线性同余方程是最基本的同余方程,“线性”表示方程的未知数次数是一次,即形如:ax≡b (mod n)的方程。此方程有解当且仅当 b 能够被 a 与 n 的最大公约数整除(记作 gcd(a,n) | b)。这时,如果 x0 是方程的一个解,那么所有的解可以表示为:{x0+kn/d|(k∈z)}其中 d 是a 与 n 的最大原创 2016-10-17 11:23:59 · 2722 阅读 · 0 评论 -
消消乐游戏算法实现(三消乐)
先上前端效果图3消乐地图初始化的时候不允许有下面两种情况的发生,就是不允许3个(3个以上已经包含3个,所以只要判断3个就可以了)相同颜色的格子连在一起,下图是两种情况,细分分为6种情况,就是初始点为3个格子中的一个为一种情况,所以细分2*3=6种情况原创 2015-04-28 10:30:41 · 62735 阅读 · 19 评论 -
(高效率排序算法一)并归排序
归并排序 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归 并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r原创 2015-04-30 16:24:02 · 3601 阅读 · 1 评论 -
(高效率排序算法三)堆排序
一.堆的介绍 堆有如下特点的二叉树: 1.他是完全的二叉树。也就是说,除了树的最后一层布需要时满的,其他的每一层从左到右都是满的.(如下图的完全二叉树跟不完全二叉树) 2.它常常用一个数组在实现。(如下图显示了堆它与数组之间的关系。堆在存储器中的表示是数组;堆只是概念上的表示。注意树是完全二叉树,...原创 2015-05-05 21:34:36 · 2698 阅读 · 3 评论 -
最大匹配分词算法
全文检索有两个重要的过程:1分词 2倒排索引我们先看分词算法目前对中文分词有两个方向,其中一个是利用概率的思想对文章分词。 也就是如果两个字,一起出现的频率很高的话,我们可以假设这两个字是一个词。这里可以用一个公式衡量:M(A,B)=P(AB)/P(A)P(B),其中 A表示一个字,B表示一个字,原创 2015-05-06 16:36:49 · 1924 阅读 · 0 评论 -
二叉树算法(java)
为什么实用二叉树一,在有序数组中插入删除数据太慢 1插入或者删除一条数据会移动后面的所有数据 二,在链表中查找数据太慢 2查找只能从头或者尾部一条一条的找用树解决问题 有没有一种插入和删除像链表那么快,查询可以向有序数组一样查得快那样就好了。 数实现了这些特点,称为了最有意思的数据结构之一树的术语如下图树分平衡树和非平衡树二叉树的类public class Tree { ...原创 2015-05-15 11:09:42 · 9136 阅读 · 3 评论 -
大数据处理算法一:BitMap算法
腾讯面试题:给20亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中并且所耗内存尽可能的少? 解析:bitmap算法就好办多了 所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。 例如,要判断一千万个人的状态,每个人只有两种状态:男人,女人,可以原创 2015-04-29 09:57:23 · 12120 阅读 · 6 评论 -
(高效率排序算法二)快速排序
快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。示例假设用户输入了如下数组:下标原创 2015-05-04 19:02:12 · 1886 阅读 · 0 评论 -
大数据处理算法三:分而治之/hash映射 + hash统计 + 堆/快速/归并排序
百度面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。IP 是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的 IP(可以采用hash_map进行频率统计,然后再找出频率最大的几个)及相应的频率。然后再在这1000个最大的IP中,找出那个频率最大的IP,即 为所求。 百度面试题2、搜原创 2015-04-29 17:37:59 · 4932 阅读 · 0 评论 -
大数据处理算法二:Bloom Filter算法
百度面试题:给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。 一. 实例 为了说明Bloom Filter存在的重要意义,举一个实例原创 2015-04-29 11:21:47 · 3646 阅读 · 0 评论 -
队列
队列(常用数据结构之一)队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。package data;/** * 隊列 * * @author JYC506 * */public class原创 2015-04-24 22:32:46 · 665 阅读 · 0 评论 -
常见的hash函数 :-D 非常经典!!
算法pascalfunctionjavafilter加密目录(?)[-]常见的Hash算法General Hash Function Source Code CGeneral Hash Function Source Code CGeneral Hash Function Source Code Pascal Object PascalGeneral Hash Functi转载 2015-04-29 11:33:41 · 1275 阅读 · 0 评论 -
栈
栈(计算机术语)栈 (stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个 栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除 掉,使其相邻的元素成为新的栈顶元素。特点:先进先出原创 2015-04-24 22:30:43 · 560 阅读 · 0 评论 -
游戏碰撞之OBB算法实现(java代码实现)
公司业务需求 游戏2D模型有圆形和矩形,判断碰撞说白了就是检测 : 1.圆形跟圆形是否有相交 2.圆形跟矩形是否相交 3.矩形和矩形是否相交 先明白要实现的原理,才能有思路写代码 第1个最好判断,判断两个圆中心点的矩形是否小于这两个圆的半径之和 第2个纠结了我一下,不过也不难先看图圆跟矩形关系有4种原创 2015-03-18 15:20:44 · 3406 阅读 · 0 评论 -
最短路径A*算法原理及java代码实现(看不懂是我的失败)
算法只要懂原理了,代码都是小问题,先看下面理论,尤其是红色标注的(要源码请留下邮箱,有测试用例,直接运行即可)A*算法百度上的解释:A*[1] (A-Star)算法是一种静态路网中求解最短路最有效的直接搜索方法。公式表示为: f(n)=g(n)+h(n),其中 f(n) 是从初始点经由节点n到目标点的估价函数,g(n) 是在状态空间中从初始节点到n节点的实际代价,h原创 2015-03-18 20:59:38 · 19270 阅读 · 71 评论 -
KNN算法例子(java,scala,python 代码实现)
java 版本package com.fullshare.test;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;/** * @author huangjiangnan * @email huangjiangna原创 2017-12-14 18:40:09 · 1827 阅读 · 1 评论