算法
数据结构与算法
weisonx
developer & engineer
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
topK算法实现
显然的思路是选择排序算法将数据排序后输出后(前)K个即可。但是这时间复杂度最快也只能是期望nO(lg n).2.排除剩下K个数据再通过普通排序输出K个数据。简述:选择数据中前k大(或小)的数。1.利用快排思路,每次排除一半的数据。原创 2023-02-28 22:07:59 · 271 阅读 · 0 评论 -
在Linux内核空间中计算MD5值
使用Crypto API。原创 2022-11-21 15:19:56 · 1122 阅读 · 0 评论 -
LSM-tree原理分析
本文围绕以下几点并基于网上的资料(见文末)进行分析: 1. SSTable、index组成、作用,SSTable持久、不可变是什么意思? 2. key、value组成、作用 3. 树的组织、每层的内容组成、组成单位 4. key在每层有序还是全局有序、连续有序还是非无序? 5. 每层的内容发生改变的情况,没有交集的SSTable如何、什么存放到(到下一层)磁盘? 6. 合并策略,合并对象只是相邻的两层发生合并? ...原创 2022-02-15 14:45:08 · 1545 阅读 · 0 评论 -
堆——最小优先队列以及实现
数据结构堆的介绍:堆与堆排序 用于作业调度的最大/小优先队列可以使用堆来实现: • 最大优先队列支持以下操作 ○ INSERT(S, x):把元素x插入集合S ○ MAXIMUM(S):返回S中具有最大关键字的元素 ○ EXTRACT-MAX(S):去掉并返回S中的具有最大键字的元素 ○ INCERASE-KEY(S, x, k):将元素x的关键字值增加到k,这里假设k的值不小于x的原关键字值 • 最小优先队列支持以下操作: ○ INSERT ○ MINIMUM ○ EXTRACT_MIN ○..原创 2021-12-16 15:54:32 · 814 阅读 · 0 评论 -
排序算法——分类
按照实现排序的方法进行主分类: 实际上,常用的六种是: 冒泡排序 快速排序 希尔排序 堆排序 归并排序 基数排序原创 2021-12-15 13:36:48 · 403 阅读 · 0 评论 -
排序算法——快速排序
实现代码: //以第一个元素为主元 int partition(vector<int> &data, int l, int r) { int main = 0; int i = 0; int j = 0; if(l >= r) return l; i = l; main = data[l]; for(j = l+1; j <= r; j++) { if(data[j]原创 2021-12-15 10:24:51 · 1339 阅读 · 0 评论 -
堆与堆排序
如下图所示,(二叉)堆是一个数组,它可以被看成一个近似的完全二叉树。(图略) ○ 树上的每一个结点对应数组中的一个元素。 ○ 除了最底层外,该树是完全充满的,而且是从左向右填充。 ○ 上图以二叉树和数组形式展现的一个最大堆。每个结点圆圈内部的数字是它所存储的数据。结点上方的数字是它在数组中相应的下标。数组上方和下方的连线显示的是父-子关系:父结点总是在它的孩子结点的左边。该树的高度为3,下标为4(值为8)的结点的高度为1 ○ 表示堆的数组A包括两个属性:A.length(通常)给出数组元素的个数,A.h..原创 2021-12-14 16:48:37 · 416 阅读 · 0 评论
分享