自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(3)
  • 收藏
  • 关注

原创 为什么logn+log(n/2)+log(n/4)+...+log(n/n) = Θ((logn)^2)

首先这里log⁡n\log nlogn其实是 2 为底的对数log⁡2n\log_{2}nlog2​n.log⁡n+log⁡n2+log⁡n4+log⁡n8+⋯+log⁡nn==∑i=0klog⁡n2i(这里2k=n,即k=log⁡n)=log⁡∏i=0kn2i=log⁡nk+12k(k+1)2=(k+1)log⁡n−12⋅k⋅(k+1)=12⋅log⁡n⋅(log⁡n+1)=Θ(log⁡2n)\begin{align*}&\log{n}+\log{\frac{n}{2}}+\log{\frac{n}{

2025-03-03 21:55:51 797

原创 数据结构 -- 堆

MinHeap 类实现了一个最小堆数据结构,支持插入、删除最小元素、堆化等操作。最小堆是一种完全二叉树,其中每个节点的值都小于或等于其子节点的值。

2024-11-25 15:39:20 664

原创 素数筛法:埃氏筛法与线性筛法

时间复杂度是Onloglogn。如果我们从小到大考虑每个数,然后同时把当前这个数的所有(比自己大的)倍数记为合数,那么运行结束的时候没有被标记的数就是素数了。例如:考虑 2 时, 我们把 4, 6, 8, 10, 12, 14, 16, 18 … 均标记为合数。考虑 3 时, 我们把 6, 9, 12, 15, 18, 21, 24, 27 … 均标记为合数。考虑 4 时, 我们把 8, 12, 16, 20, 24, 28, 32, 36 … 均标记为合数。

2024-11-24 16:41:17 1312 1

用c++实现的最小堆源码

MinHeap 类实现了一个最小堆数据结构,支持插入、删除最小元素、堆化等操作。最小堆是一种完全二叉树,其中每个节点的值都小于或等于其子节点的值。 成员变量 T *heap:指向堆数组的指针。 int N:当前堆中的元素数量。 int maxSize:堆的最大容量。 公有成员函数 void heapify():将堆数组调整为最小堆,从最后一个非叶子节点开始,依次向上进行下滑调整。 bool Insert(const T x):将元素 x 插入到堆的末尾,然后进行上滑调整以维持最小堆的性质。如果堆已满,返回 false。 T RemoveMin():删除并返回堆中的最小元素,然后进行下滑调整以维持最小堆的性质。 私有成员函数 void siftDown(int start, int m):从 start 到 m 下滑调整成最小堆,自上向下比较,如果子女的值小于父结点,则关键码小的上浮,继续向下层比较。 void siftUp(int start):从 start 到 0 上滑调整成最小堆,自下向上比较,如果父结点的值大于当前节点,则父结点下滑,继续向上层比较。

2024-11-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除