算法
文章平均质量分 50
fox1987
这个作者很懒,什么都没留下…
展开
-
B 树 B+树
拜读了 http://blog.csdn.net/v_july_v/article/details/6530142, 自己总结下: B树的出发点是为了解决磁盘IO慢的问题,尽量再一个磁盘块中提供更多的索引信息。 B+树是在B树的基础上进一步提升。所有的内部节点只有关键字,没有其他信息。降低内部节点的存储开销。是的一个磁盘块可以存储更多的内部节点。 而在叶子节点保存关键字对应的有效内容信息原创 2013-08-08 08:32:41 · 719 阅读 · 0 评论 -
一致性 hash 算法( consistent hashing )
为什么需要一致性hash 传统hash算法常用方式为:hash(object)%N N为一个固定值。 N设置较小时容易产生冲突碰撞问题。而N设置较大时则带来开销问题。 对于我们常用的单机程序时是内存开销变大。而用在分布式环境时,该N值和机器数目相关,则是需要的机器数增加。因此,N值应该是一个随着 业务不断变大,而逐步提升的值。而该传统的hash算法带来的问题是N值改变,比如最初N为5,后原创 2013-08-08 08:32:46 · 1064 阅读 · 0 评论 -
KMP 算法学习
KMP算法是用来做字符串匹配的。关于字符串匹配,最简单最容易想到的方法是暴利查找,使用双重for循环处理。该方法的时间复杂度为O((n-m+1)*m) (n为目标串T长度,m为模式串P长度, 从T中寻找是否有P串存在)。暴利的问题是在匹配中没有利用之前比较的信息。而这些信息可能是非常有用的。所以是可以进行优化以降低时间复杂度。而KMP算法就是一个利用模式串来构造计算不匹配时计算模式串和原创 2013-08-25 13:58:44 · 659 阅读 · 0 评论 -
异或链表
异或链表的结构这是一个数据结构。利用计算机的的位异或操作(⊕),来降低双向链表的存储需求。... A B C D E ... –> next –> next –> next –> 双向链表如上面所示,每个节点有两个指针,分别指向该节点的前驱和后继。而XOR链表如下面所示原创 2013-08-14 15:43:33 · 1750 阅读 · 0 评论 -
GarsiaWachs算法
该算法可以用来解决石子问题:题目描述如下:有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相邻的两堆石子,一次合并的代价为两堆石子的重量和w[i]+w[i+1]。问安排怎样的合并顺序,能够使得总合并代价达到最小。(题目可以参见:http://www.wikioi.com/problem/1048/)算法思想:设一个序列是A[0..n-1],每次寻找原创 2013-08-18 21:23:03 · 1438 阅读 · 0 评论 -
A星寻路算法介绍
转载自:http://www.raywenderlich.com/zh-hans/21503/a%E6%98%9F%E5%AF%BB%E8%B7%AF%E7%AE%97%E6%B3%95%E4%BB%8B%E7%BB%8D学习该算法,并添加自己的理解,注释A*算法是Dijkstra算法和贪婪算法的综合,Dijkstra算法的缺点在于从起点全方位360地向外做广度优先搜索,导致遍历节点太多,转载 2013-08-15 09:38:42 · 1293 阅读 · 0 评论 -
常用排序算法比较
平均时间复杂度最差时间复杂度空间复杂度是否稳定总结冒泡排序O(n^2)O(n^2)O(1)是最慢的排序算法选择排序O(n^2)O(n^2)O(1)否是一种交换排序算法,实际使用较少插入排序O(n^2)O(n^2)O(1)是比冒泡快2倍,一般在数据量1000以下使用。希尔排序原创 2013-09-16 15:28:35 · 1113 阅读 · 2 评论