1052 字
3 分钟
考研专业课学习记录2026-07-18
2026-07-18

考研专业课学习记录 | 2026-07-18#

今日学习内容#

今日累计学习1小时,聚焦408数据结构模块的归并排序与基数排序核心知识点,梳理两种排序算法的原理、实现细节、复杂度分析与考研高频考点。

AI知识点带复盘#

归并排序考点复盘#

归并排序是基于分治策略的稳定比较类排序算法,核心流程分为「分解」与「合并」两个阶段:

  1. 分解:将待排序数组从中间划分为两个子数组,递归对每个子数组进行归并排序,直到子数组长度为1(单个元素天然有序)。
  2. 合并:将两个有序子数组合并为一个有序数组,需要借助额外的辅助数组存储合并结果。

核心考点:#

  • 时间复杂度:无论数组初始状态如何,均为 O(nlogn)O(n\log n),递归树深度为log2n\log_2n,每层合并总操作次数为O(n)O(n)
  • 空间复杂度:O(n)O(n),辅助数组的空间开销为核心,递归栈空间仅为O(logn)O(\log n)
  • 稳定性:稳定排序,合并过程中相同元素的相对位置不会发生改变。
  • 考研常考题型:递归实现代码编写、非递归实现思路、每一趟归并的结果推演、与快速排序/堆排序的复杂度&稳定性对比。

基数排序考点复盘#

基数排序是非比较类排序算法,不通过元素间的直接比较确定顺序,而是通过「分配」与「收集」按关键字的每一位进行排序,分为两种主流实现方式:

  1. 最低位优先(LSD):从最低位开始依次按位排序,适合短关键字(如学号、电话号码)场景。
  2. 最高位优先(MSD):从最高位开始依次按位排序,适合长关键字场景。

核心考点:#

  • 时间复杂度:O(d(n+r))O(d(n+r)),其中dd为关键字的位数,rr为基数(如十进制排序r=10r=10),nn为元素个数。
  • 空间复杂度:O(n+r)O(n+r),需要rr个辅助队列存储分配的元素,以及存储结果的辅助数组。
  • 稳定性:稳定排序,分配和收集过程中保留相同位元素的原有顺序。
  • 适用场景:数据范围已知且关键字位数固定的整数/字符串排序,不适用于需要比较整体大小的通用排序场景。

易混淆点:#

与归并排序的核心区别:基数排序不依赖元素间的比较,而是按位拆分处理,适合大批量低位数的整数排序。

问题与反思#

  1. 对归并排序的非递归实现细节不够熟练,容易混淆合并区间的起始与结束下标,需要额外结合代码示例巩固。
  2. 基数排序的基数rr与位数dd的概念容易搞混,在多进制场景下的复杂度计算容易出错。
  3. 初期混淆了归并排序与快速排序的分治逻辑,归并是先完全分解再合并,快排是先分区再递归处理子区间。

收获与总结#

  1. 系统掌握了归并排序的核心原理与实现逻辑,能够独立写出递归版本代码,明确了其稳定、O(nlogn)O(n\log n)的核心特性。
  2. 理解了基数排序的非比较排序本质,区分了LSD与MSD两种实现方式的适用场景,理清了其复杂度与稳定性的推导过程。
  3. 辨析了归并排序与基数排序在适用场景、复杂度、实现逻辑上的核心差异,能够快速对应408真题中的考点方向。

💡 碎碎念:踏实吃透每一个知识点!

文档内容由 AI 辅助生成

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

考研专业课学习记录2026-07-18
https://elysiaweb.vercel.app/posts/408/7-18/
作者
程翊雪
发布于
2026-07-18
许可协议
Unlicensed

部分信息可能已经过时

目录