算法基础
围绕基础解题方法、复杂度与排序建立知识索引,并接入已有实验和比赛笔记。
算法基础基础
-
算法基础简介
从问题规模、正确性与实现边界出发,建立枚举、分治、贪心和排序等基础方法的学习框架。
-
枚举
L 题枚举候选密码,结合 BFS 预处理的状态距离检查约束。
-
模拟
把题面规则拆成状态与更新步骤,按事件顺序执行,并检查初始化和边界情况。
-
递归 & 分治
Task 2 讲解平面最近点对的递归划分、条带合并与复杂度。
-
贪心
每一步作局部选择,通过交换论证或不变量证明它不会损失全局最优解。
-
前缀和 & 差分
用累积量快速求区间结果,用相邻差分记录变化,注意下标约定与还原过程。
-
二分
J 题在排序后的 DFS 序列表中二分查找区间内的邻接点。
-
倍增
预处理长度为二的幂的跳转或区间信息,再按二进制拆分合并所需步数。
-
构造
从限制条件和不变量出发直接设计合法对象,并证明可行性及无解情形。
复杂度
排序
-
排序简介
Task 3 至 Task 5 展示多种排序实现、用时比较与快排应用。
-
选择排序
Task 3 实现选择排序,每轮选出后缀最小值并交换到前端。
-
冒泡排序
通过相邻比较和交换消除逆序,利用一轮没有交换的条件提前结束。
-
插入排序
Task 3 实现插入排序,分析有序前缀与提前停止条件。
-
计数排序
统计有限值域内各键的频次,利用累计计数定位元素,并控制值域带来的空间开销。
-
基数排序
任务 4 用 FIFO 桶实现非负整数和定长 ASCII 字母串的 LSD 基数排序。
-
快速排序
Task 3 实现随机选轴和短侧递归,分析分割深度与栈空间。
-
归并排序
Task 3 实现稳定归并排序,并复用辅助数组。
-
堆排序
建堆后反复取出堆顶并修复堆结构,在原数组内逐步确定最终位置。
-
桶排序
按值域把元素分入有序的桶,分别处理后拼接;效率取决于分桶方式和数据分布。
-
希尔排序
Task 3 实现三种希尔排序增量序列及分组插入过程。
-
锦标赛排序
用树形比较记录胜者,取出最小元素后只更新相关路径,复用未变化的比较结果。
-
Tim 排序
识别已有的有序段,结合插入排序和稳定归并,利用输入中的局部有序性。
-
排序相关 STL
按需求选用 sort、stable_sort、partial_sort 等工具,并确保比较器满足严格弱序。
-
排序应用
Task 5 用快速划分解决仅允许跨类比较的螺丝螺母匹配。