algorithm
文章平均质量分 92
丑井
C/C++ 分布式 存储 ...
展开
-
堆和堆排序 - 彻底解析+C语言实现+opencv绘图助解
本文的最原始出发点在于分享一种彻底搞明白堆排序的方法。百度一下堆排序,会有很多讲解内容。一来就开始讲堆的属性,读者不知道为什么。一来就给出堆的数据结构代码,直接从代码开始讲堆排序,读者一片茫然。直接告诉你堆排序的流程,比如先交换位置,然后执行上浮、下沉等操作,很难理解。本文从堆的前世今生讲起,并且借助opencv绘制出堆的图,以及一些关键临时状态的图,最终让你彻底明白什么是堆和堆排序。注:如果你只想关注堆排序,你可以直接去看堆排序章节,里面会给你导航你至少需要了解的堆相关知识的链接。原创 2024-04-24 15:40:27 · 979 阅读 · 5 评论 -
B+tree - B+树深度解析+C语言实现+opencv绘图助解
B+tree很重要,它被广泛应用于数据库和文件系统中作为索引结构。全站讲B+tree的,基本上都是主讲b-tree,最后顺带一两句的B+tree。有一些能配图讲解b+tree的插入和删除,但也是部分场景,不全面。本文将深度解析B+tree,系统的讲清楚B+tree的实现细节。并使用opencv来绘制B+tree,协助理解B+tree。包括绘制一些关键的中间临时状态的B+tree,高亮关键节点展示算法过程等,以进一步理解B+tree的实现原理。原创 2024-04-24 15:39:19 · 621 阅读 · 3 评论 -
B-tree - B树深度解析+C语言实现+opencv绘图助解
看过很多讲btree的,大多一知半解。有一些能大概讲清原理,但是实现的代码漏洞百出。最近花了点时间整理了一下这些年的资料,建了个代码仓库,从0开始实现了btree。这里成文记录,争取把btree讲透彻。详细介绍btree的算法实现逻辑,用C语言实现一种Btree的算法,该算法代码:支持构建任意阶的Btree(只要满足m >= 3就行)支持存储任意类型的key代码尽量简洁易懂纯C实现,以便有需要的同学可直接拿去应用。当btree应用于内核这种更底层的场景时,C++实现的版本就不可用了。原创 2024-03-23 00:36:00 · 1131 阅读 · 1 评论 -
分布式一致性算法-Paxos翻译和注解
Paxos是解决不可靠处理器(不可靠是指处理器可能故障)网络中一致性问题(consensus)的一个协议族。一致性(或者共识)是在一组参与者之间对一个结果达成共识的过程。当参与者或者它们的交互媒介可能发生故障的时候,这个问题变得复杂。原创 2024-02-28 17:45:45 · 1207 阅读 · 1 评论 -
分布式一致性算法-Raft翻译和注解
Raft算法是一种分布式系统中的一致性算法,提供和Paxos相同级别的功能和性能,2014年首次发表。Raft因其易于理解和实现的特性,已经被广泛应用于多种分布式系统中,包括分布式数据库、分布式文件系统、服务发现系统等。原创 2024-02-28 15:18:34 · 1071 阅读 · 1 评论 -
动态规划-最长公共子串(c)
动态规划(dynamic programming)是一种算法设计方法。基本思想是在对一个问题的多阶段决策中,按照某一顺序,根据每一步所选决策的不同,会引起状态的转移,最后会在变化的状态中获取到一个决策序列。上面这段话是比较官方的术语描述,还可以这样从编程层面理解:动态规划一般用于求解具有重叠子问题和最优子结构特性的问题。它通过将大问题分解为小问题,并存储小问题的解(通常在一个表格中),避免了重复计算,从而提高了效率。动态规划可以应用于许多类型的问题,包括但不限于最优化问题、计数问题和决策问题。原创 2024-02-27 11:20:50 · 630 阅读 · 0 评论 -
动态规划-01背包问题新解(c)
本文将从一个新的角度来描述和实现01背包问题,以协助对01背包问题以及教材上的算法的彻底理解。新的角度为:传统思路算法,“新”是新在与绝大部分官方算法思路的区别,但是该算法的思路是传统的,传统是指动态规划领域的传统。动态规划:简介动态规划问题,因为01背包问题是动态规划中的经典示例之一01背包问题:01背包问题简介传统思路算法:区别于“官方”的算法实现,使用传统的动态规划思想来实现01背包问题,以帮助理解01背包问题的基本实现思想。原创 2024-02-27 11:19:25 · 1340 阅读 · 0 评论