240 发简信
IP属地:广东
  • 线段树

    线段树是一棵完全二叉树,常用于解决区间统计问题。 线段树的结构 通常用数组来模拟,开4倍原始大小以避免越界。 从下标为1的元素(根节点)开始存数...

  • 洗牌算法

    假设有数组A[n],现要打乱元素的顺序,使各个元素等概率地出现在各个位置,称为洗牌操作。 下面是一种简单高效的做法,其思路在从左往右扫描,每次从...

  • 并查集

    并查集(UnionFind)是一种简单高效的数据结构,主要用于解决一类连通性判断的问题。以下是经典描述:平面上最初有n个孤立的点,编号分别为1~...

  • 二叉堆

    二叉堆是一棵完全二叉树,一般用数组来表示,且下标从1开始。 假设某个非根节点的下标为n(>1),那么它的: 左子节点下标为2n 右子节点下标为2...

  • 归并排序

    归并排序是一种采用分治策略的简单高效排序算法,最好和最坏时间复杂度均为O(nlogn),优势在于它稳定、适用于外排序,缺点在于需要额外的O(n)...

  • 堆排序

    堆排序是另一种时间复杂度为O(nlogn)的排序算法,它的实现依赖于二叉堆,优点是就地排序,无需额外空间,最坏时间复杂度也是O(nlogn),缺...

  • 快速排序

    在基于比较的排序算法中,快速排序是目前公认最快的排序算法,平均时间复杂度为O(nlogn)。优势在于简单、就地排序、速度快,缺点是不稳定、最坏情...

  • 拓扑排序

    拓扑排序是对一个对向图的所有顶点进行排序,使得每一条有向边(u,v)对应的u都排在v的前面。 基于BFS实现的算法流程: 读图,记录每个顶点的入...

  • 康拓展开

    康拓展开主要用于解决字典序排列问题。 问题1:集合{1,2,3,4,5,6,7,8,9}构成的全排列有9!个,问357412968在所有全排列中...