算法与数据结构
文章平均质量分 96
算法与数据结构
zzhongcy
因为站在了巨人的肩上,所以我看得更远。
当你发现自己的才华撑不起野心时,就请安静下来学习吧
展开
-
一个详细的数据结构博客
直接上连接:https://www.cnblogs.com/skywang12345/p/3603935.html原创 2020-11-06 16:56:36 · 345 阅读 · 0 评论 -
最短路径算法-----Dijkstra迪杰斯特拉算法
最近巩固一下算法,提高自己内力,网上看到查看到这篇介绍很详细的《Dijkstra迪杰斯特拉算法》,在这里转载记录一下。前言本章介绍迪杰斯特拉算法。和以往一样,本文会先对迪杰斯特拉算法的理论论知识进行介绍,然后给出C语言的实现。后续再分别给出C++和Java版本的实现。目录1.迪杰斯特拉算法介绍2.迪杰斯特拉算法图解3.迪杰斯特拉算法的代码说明4.迪杰斯特拉算法的源码转载请注明出处:http://www.cnblogs.com/skywang12345/更多内容:数据结构与算法系...转载 2020-11-06 16:41:16 · 9651 阅读 · 2 评论 -
Twitter雪花算法SnowFlake介绍
前言 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。 有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 而twitter的SnowFlake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassandra,因为Cassandra没有顺序ID生成机制,所以开发了这样一套全局唯一ID生成服务。1 理解分...原创 2020-11-02 15:22:52 · 2100 阅读 · 0 评论 -
二叉树、B树(B-树)、B+树、B*树详解,以及为什么MySQL选择B+树做索引
温故而知新,可以为师矣。看到一篇介绍B数和B减树的文章,这里记录一下。1. 简要众所周知,MySQL的索引使用了B+树的数据结构。那么为什么不用B树呢?先看一下B树和B+树的区别。2. 二叉树先介绍一下二叉搜索树。顾名思义,二叉搜索树,即指最多拥有两个叉,这里的叉即为所有非叶子结点的儿子(Lift和Right); 所有的结点存储一个关键字; 非叶子结点的左指针指向小于其关键字的结点,右指针指向对于其关键字的结点,结构如下图: 二叉搜索树的搜索,从根结点开始,如果查询的关...原创 2020-09-11 14:37:47 · 3804 阅读 · 4 评论 -
Redis的高级数据结构HyperLogLog
前言最近研究HyperLogLog,网上查了查资料,这里记录一下什么是HyperLogLogHyperLogLog是最早由Flajolet及其同事在 2007 年提出的一种估算基数的近似最优算法。但跟原版论文不同的是,好像很多书包括 Redis 作者都把它称为一种新的数据结构(new datastruct)(算法实现确实需要一种特定的数据结构来实现)。统计需求思考这样的一个场景: 如果你负责开发维护一个大型的网站,有一天老板找产品经理要网站上每个网页的UV(独...转载 2020-08-11 14:40:43 · 268 阅读 · 0 评论 -
跳跃表(Skip list)原理
前言Redis大家可能都很很熟悉了吧,它有五种数据结构如下:String:字符串 Hash:字典 List:列表 Set:集合 Sorted Set:有序集合 这里我们就讲讲Sorted Set,它是一个 set 保证了内部 value 的唯一性,另一方面又可以给每个 value 赋予一个排序的权重值 score,来达到排序的目的。它的内部实现就依赖了一种叫做「跳跃列表」的数据结构。为什么要有跳跃表我们在实际开发中经常会有在一堆数据中查找一个指定数据的需求,而常用...转载 2020-08-10 15:53:13 · 2831 阅读 · 0 评论 -
除法的优化
浮点运算大多数的ARM处理器硬件上并不支持浮点运算。但ARM上提供了以下几个选项来实现浮点运算。浮点累加协处理器FPA(Floating-PointAccelerator):ARM上提供了一组协处理器指令专门实现浮点运算。但这需要硬件支持,具体某一处理器上是否有FPA协处理器支持,可以查看ARM相关手册。·浮点运算仿真(FPE):使用软件仿真了FPA协处理器转载 2017-08-15 11:21:22 · 9769 阅读 · 1 评论 -
游戏开发中常用的设计模式
使用设计模式来提高程序库的重复利用性是大型程序项目开发必须的。但是在“四人帮”的设计模式概述中提到了23种标准设计模式,不但难以记住,而且有些设计模式更多的适用于应用程序开发,对游戏项目引擎设计并没有很多的利用价值。根据经验,精挑细选后,笃志在这里记录一些自认为有利用价值的设计模式,以便之后自己设计时使用。一:观察者Observer 观察者的设计意图和作用是: 它将对象与对象之转载 2016-11-18 09:47:11 · 1406 阅读 · 0 评论 -
有限状态机FSM
有限状态机又简称FSM(Finite-State Machine的首字母缩写)。这个在离散数学里学过了,它是计算机领域中被广泛使用的数学概念。是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。编译原理学得好的童鞋应该对FSM不陌生,因为编译器就用了FMS来做词法扫描时的状态转移。FSM的概念在网上一搜可以搜一大堆出来,但估计您也看不大明白。本文将以不一样的方式来讲述FSM的概转载 2016-11-18 09:34:49 · 5833 阅读 · 0 评论 -
海量数据处理系列之:用C++实现Bitmap算法
bitmap是一个十分有用的结构。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。 适用范围:可进行数据的快速查找,判重,删除,一般来说数据范围是int的10倍以下基本原理及要点:使用bit数组来表示某些元素是否存在,比如8位电话号码扩展:bloom filter转载 2015-08-26 14:04:26 · 3179 阅读 · 0 评论