堆(Heap)详解与 C# 实现 堆是一种完全二叉树数据结构,满足以下性质: 最大堆:父节点值 ≥ 子节点值(堆顶为最大值)。 最小堆:父节点值 ≤ 子节点值(堆顶为最小值)。 1. 核心操作与复杂度


一、图(Graph)是什么? 图是由顶点(Vertex) 集合和边(Edge) 集合组成的数据结构,用于表示事物及其之间的关系。 顶点:代表事物或对象(例如,城市、人、网页)。 边:代表顶点之间的关系(例如,城市之间的道路、人与人之间的朋友关系、网页之间的超链接)。 数学上记为:G = (V, E)

排序


排序算法的稳定性 什么是算法的稳定性? 算法的稳定性(Stable Sorting)是指排序算法在排序过程中,相等元素的相对顺序是否保持不变。具体来说: •</

二叉树


介绍 最常用的树就是二叉树。二叉树的每个节点最多有两个子节点,分别是左子节点和右子节点。二叉树中,有两种比较特殊的树,分别是满二叉树和完全二叉树。满二叉树又是完全二叉树的一种特殊情况。 二叉树既可以用链式存储,也可以用数组顺序存储。数组顺序存储的方式比较适合完全二叉树,其他类型的二叉树用数组存储会比

散列表


什么是散列表 散列表来源于数组,它借助散列函数对数组这种数据结构进行扩充,利用的是支持按照下标随机访问元素的特性,它最大的特点就是查找、插入、删除的平均时间复杂度接近 O(1) 散列表两个核心问题是 散列函数设计和散列冲突解决。散列冲突有两种常用的解决方式,开放寻址法和链表法,散列函数设计的好坏决定

二分查找


二分查找(Binary Search)详解 二分查找是一种在有序数组中查找特定元素的高效算法,时间复杂度为 O(log n),比线性查找的 O(n) 快得多。 核心思想 "分而治之" - 通过不断将搜索范围减半来快速定位目标值 算法特性 前提条件:数组必须是有序的(升序或降序)

解释器模式 (Interpreter Pattern)


解释器模式是一种行为设计模式,它定义了一种语言的文法表示,并提供一个解释器来解释这种语言中的句子。这种模式通常用于需要解释和执行特定领域语言的场景。 解释器模式为某个语言定义它的语法(或者叫文法)表示,并定义一个解释器用来处理这个语法。实际上,这里的“语言”不仅仅指我们平时说的中、英、日、法等各种语

命令模式 (Command Design Pattern)


命令模式是一种行为设计模式,它将请求或操作封装为对象,使你可以参数化客户端对象,将请求排队、记录请求日志,以及支持可撤销的操作。 落实到编码实现,命令模式用到最核心的实现手段,就是将函数封装成对象。我们知道,在大部分编程语言中,函数是没法作为参数传递给其他函数的,也没法赋值给变量。借助命令模式,我们

中介者模式(Mediator Design Pattern)


1. 介绍 中介模式定义了一个单独的(中介)对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互,来避免对象之间的直接交互。 中介模式的设计思想跟中间层很像,通过引入中介这个中间层,将一组对象之间的交互关系(或者依赖关系)从多对多(网状关系)转换为一对多(星状关系)。原来一个对象

备忘录模式(Memento Design Pattern)


备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下,捕获并外部化一个对象的内部状态,以便稍后可以将该对象恢复到原先保存的状态。 备忘录模式也叫快照模式,具体来说,就是在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态。这个模式的定义表达