Marlin's Blog

「编译当下,重构未来」

堆结构和堆排序

heap structure and heap sort

堆结构 最大堆: 父节点的值大于等于其子节点的值 最小堆: 父节点的值小于等于其子节点的值 本文以最大堆为例。 堆中最重要的操作为向上调整和向下调整。 向上调整(Heapify Up):将一个节点向上移动,直至其父节点的值小于等于其子节点的值。 0-based 数组下标时,i 的父节点为 (i-1)/2。 向下调整(Heapify Down):将一个...

随机快速排序

randomized quicksort

随机快速排序 算法原理 随机快速排序(Randomized Quicksort)是一种基于快速排序的排序算法,它在快速排序的基础上,通过引入随机化来减少最坏情况的发生。 随机快速排序的基本思想是:在快速排序的过程中,随机选取一个元素作为枢轴(pivot),然后将数组分成两个子数组,左边的子数组中的元素都小于等于枢轴,右边的子数组中的元素都大于等于枢轴。然后对两个子数组分别递归地进行快速...

最近公共祖先

LCA

最近公共祖先(LCA) 最近公共祖先(LCA)是一种树形数据结构的算法,用于在一棵树或图中找到两个节点的最近公共祖先。 朴素算法 逐级向上遍历,直到找到两个节点的公共祖先。 先对树进行预处理,得到每个节点的父节点和深度。时间复杂度为 $O(n)$。 之后,对于每个查询,从根节点开始,逐级向上遍历,直到找到两个节点的公共祖先。时间复杂度为 $O(mh)$。 总时间复杂度为 $O(n+mh...

正则表达式

本文大量参照了正则表达式30分钟入门教程,并结合自己的理解进行了补充和修改。 正则表达式(Regular Expression,简称Regex或RegExp)是一种用于描述、匹配和处理文本模式的工具,它通过特定的语法规则来定义字符串的匹配模式,广泛应用于文本搜索、替换、验证等场景。以下是关于正则表达式的详细介绍: 一、核心概念与作用 模式描述 用简洁的符号组合描述字符串的规则,例如...

终于结束的起点

终于开始的新征程

终于结束的起点 终于结束的起点 终于写下句点 终于我们告别 终于我们又回到原点 …… 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回不断上演。 如果这次 NOIp 是你的起点,那么祝你的 OI 生涯如同夏花般绚烂; 如果这次 NOIp 是你的终点,那么祝你的 OI 回忆宛若繁星般璀璨。 也许这是你最后一次在洛谷上打比赛,也许...

简历

马凌峰简历 基本信息 出生日期:2005.01 籍贯:陕西 西安 联系方式:153-**-0482 邮箱:marlin-phone@outlook.com 求职意向:后端开发 教育背景 2023.09 - 2027.07 | 陕西科技大学 | 计算机科学与技术(本科) 主修课程:数据库原理与应用、数据结构与算法、计算机网络、计算机组成原理、面向对象程序设计、...

拓扑排序

介绍 拓扑排序(Topological Sorting)是一种常用的排序算法,它是对有向无环图(DAG, Directed Acyclic Graph)的一种排序方法。 应用 拓扑排序在许多领域都有重要的应用。 拓扑排序可以用于: 检测有向环:如果一个有向图无法进行拓扑排序,说明该图中存在有向环。因此,拓扑排序可以用于检测有向图中是否存在环,这在许多图算法和问题中都有重要的应用。 最...

素数筛

埃氏筛、欧拉筛

素数筛 素数筛是一种用于找出一定范围内所有素数的算法。 试除法 试除法是一种用于判断一个数是否为素数以及分解质因数的基本方法。 判断素数基本思想:对于给定的正整数 n,从 2 开始,依次用每个小于等于 $sqrt{n}$ 的正整数 i 去除 n,如果 n 能被 i 整除,那么 n 就不是素数;如果 n 不能被任何小于等于 $\sqrt{n}$ 的正整数整除,那么 n 就是素数。 1 2 3...

建图的三种方式

邻接矩阵、邻接表、链式前向星

建图的三种方式 1.邻接矩阵 定义:是一个二维数组matrix[n][n],其中n是图中顶点的数量。对于无向图,如果顶点i和顶点j之间有边相连,则matrix[i][j]和matrix[j][i]的值为1(若边有权值,则存储权值),否则为0。对于有向图,若存在从顶点i到顶点j的边,则matrix[i][j]为1(或权值),matrix[j][i]为0。 优点:可以快速判断任意两个...

字符串的切割

字符串的切割 题目描述 给定一个字符串,请实现一个函数,将该字符串按照某个字符分割,并返回一个包含每个子串的向量。 输入样例 1 1 2 参数1:"hello world" 参数2:' ' 输出样例 1 1 ["hello", "world"] 输入样例 2 1 2 参数1:"a b c d e f g h i j k l m n o p q r s t u v w x ...