随笔分类 - 算法
摘要:看redis代码的时候发现一个特殊的数组, 结构体中类似于char tt[] 没有大小的数组, 一般来说c语言是静止使用不固定大小的数组的, 所以就查了查发现这个东东叫柔性数组, 是c99之后加入的新特新; 故本着强烈的求知欲, 学习了下; 以下是整理学习的一些总结. 讲述柔性数组成员之前,首先要介
阅读全文
摘要:跳表(skip List)是一种随机化的数据结构,基于并联的链表,实现简单,插入、删除、查找的复杂度均为O(logN)。跳表的具体定义,跳表是由William Pugh发明的,这位确实是个大牛,搞出一些很不错的东西。简单说来跳表也是 链表的一种,只不过它在链表的基础上增加了跳跃功能,正是这个跳跃的功
阅读全文
摘要:一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 一致性hash算法提出了
阅读全文
摘要:1. 不得不说说二叉树 要了解堆首先得了解一下二叉树,在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于 2 的
阅读全文
摘要:B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中; 否则,如果查询关键字比结点
阅读全文
摘要:Spanner 是Google的全球级的分布式数据库 (Globally-Distributed Database) .Spanner的扩展性达到了令人咋舌的全球级,可以扩展到数百万的机器,数已百计的数据中心,上万亿的行。更给力的是,除了夸张的扩展性之外,他还能同时通过同步复制和多版本来满足外部一致...
阅读全文
摘要:今天自己研究了堆排序,发现个问题,你认证他就很简单你不认真就很难。用心去看任何算法都是很有魅力的,以前复习的时候感觉所有的算法都是背会的,这次复习感觉很爽所有的都是靠理解来处理;下面我就把自己简单的理解写写做个小记录方便后续巩固1.先把数据构建一个堆,这里我们选用大根堆(就是每个节点的值都不大于其父...
阅读全文
摘要:自己复习算法刚开始对于快速排序还是有点迷糊,后来多看了两遍终于搞明白怎么回事了,这里记录下下面是实例代码,用代码注释来说明吧void QuickSort(int* a, int left, int right){ int ltemp = left; int rtemp = right; ...
阅读全文
摘要:一、知道二叉树的先序/后序遍历和中序遍历(中序必须要知道,不然无法判断),要快速判断后序/先序遍历,首先要了解二叉树的遍历规律二、二叉树遍历规律1、三种遍历都有一个规律,就是:逆时针沿着二叉树外缘移动,即方向相同,如下图1:图12、3、 不同的是他们出发点不同,下面说明他们的出发点和遍历顺序序列三、...
阅读全文
摘要:1. 时间复杂度 时间复杂度是指程序运行从开始到结束所需要的时间。时间复杂度的计算一般比较麻烦,故在数据结构的研究中很少提及时间复杂度。为了便于比较同一个问题的不同算法,通常做法是,从算法中选取一种对于所研究的问题来说是基本操作的原操作,以该基本操作重复执行的次数做为算法的时间量度。基本操作应是...
阅读全文
摘要:1.位运算今天复习位运算的时候发现一个规律,之前都没有注意的,就是二进制和2的关系2^0 = 00002^1 = 00102^2 = 01002^3 = 1000后面的一次类推,可以很容易识别一个二进制的数和2的关系二进制之间的运算也都可以换算成和2相关的运算,和2相关的乘法和除法直接可以转化成移位...
阅读全文
摘要:FIFO( First In First Out)简单说就是指先进先出。由于微电子技术的飞速发展,新一代FIFO芯片容量越来越大,体积越来越小,价格越来越便宜。作为一种新型大规模集成电路,FIFO芯片以其灵活、方便、高效的特性,逐渐在高速数据采集、高速数据处理、高速数据传输以及多机处理系统中得到越来...
阅读全文
摘要:1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但...
阅读全文