数据结构
文章平均质量分 95
Knight丶
coder
展开
-
用 Rust 从 0 到 1 实现一个最简化的 KV 存储引擎
本文将从 下层的数据编码 到 上层的 kv 数据读写接口实现 完整介绍如何实现一个最简化的 kv 存储引擎,适合 Bitcask 存储模型和 Rust 语言的入门。本文的完整代码已开源在:GitHub - Morgan279/miniDB: A mini kv database demo that using simplified bitcask storage model with rust implementation.......原创 2022-06-15 23:53:15 · 2538 阅读 · 1 评论 -
白话解析B+树并附Java完整实现
白话解析B+树并附Java完整实现原创 2021-12-28 20:26:20 · 5156 阅读 · 6 评论 -
简单无向图的core分解算法
基本概念在图(Graph)模型中,常常会有一些概念用来描述图的某些特征,core就是其中之一。core主要用来描述图中点之间的紧密(cohesive)程度,core的定义为:设有简单无向图G = (V, E),其中V为点集,E为边集,∃S = (V', E'),V'⊆V, E'⊆E,∀v∈V' d(v) >= k, 且不存在u∈V - V',使得∀v∈V'∪{u} d(v) >= k, 则称S为k-core,其中d(v)表示v的度数(与点v相连的边数)用白话说就是如果图G中的存在原创 2021-07-04 16:35:37 · 4246 阅读 · 14 评论 -
用两个栈来实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解决这个问题只需要搞清楚两点:1.栈的数据结构保证了数据的先进后出2.队列的数据结构保证了数据的先进先出 也就是说出栈顺序是入栈顺序的颠倒,出队顺序依旧维持了入队顺序题目给了两个栈,于是很容易想到,用另一个栈将原先的出栈顺序和入栈顺序再颠倒一遍即可达到队列的效果 给...原创 2019-02-07 12:28:30 · 103 阅读 · 0 评论 -
旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 此题的一个关键信息就是输入的数组是一个非减排序的数组,根据旋转规则很容易得出:旋转点是极小值点,也是最...原创 2019-02-07 12:58:07 · 100 阅读 · 0 评论