这门课解决什么

排序是面试里出现频率最高的算法考点。它不只是背几个模板,而是用来测代码的稳定性、边界处理能力和对数据结构的理解。面试官通常从「手写快排」「归并求逆序对」「原地合并两个有序数组」「Top-K 不排序」四类问题里挑一个让你现场写,错一个变量就挂。这套课把这几类高频变形拆成最小可练习单元,让你用最少时间覆盖最常见陷阱:空输入、重复元素、栈溢出、分区选错基准、归并时临时数组越界。

适合什么基础

至少会用 Python/Java/C++ 写出 for、while、递归,知道什么是数组、列表、栈。不需要先学完整本算法书。课程从最朴素的冒泡/选择/插入讲起,快速过渡到归并和快排的核心不变量,再进到面试常考的「基于比较的下界」「线性时间选择」「桶/计数/基数排序的适用条件」。基础弱的同学先跟着敲一遍基础三件套,再做两道 Top-K 就能基本应付初级岗;基础好的同学可以直接进归并树、堆优化快排、原地合并这类压轴题型。

建议先看哪几块

  • 先把快排的 Lomuto 和 Hoare 两种分区写法各手写一遍,对比它们在重复元素多时的退化差异。
  • 归并排序不要只记分治步骤,务必把「如何统计逆序对」「如何在线性空间外做原地归并」这类变体也看一遍。
  • Top-K 优先过堆方法和 quickselect,快排改造版在数据接近有序时要加随机基准。

学完能独立做什么

面对面试里的排序题,能够:准确判断「能不能用快速排序」「什么时候必须用归并」「要不要换成线性选择」;在白板/在线编辑器里写出无语法错误的实现;自己构造包含空数组、全部相等、严格递增、严格递减、单元素等用例逐个验证;被追问空间复杂度、稳定性、最坏情况时能说清原因。简单说,不是背代码,而是能把一道排序题从「会做」推进到「经得起追问」。

资料怎么配合练习

  • 把课程提供的每道题先用自然语言写出不变量和终止条件,再落笔写代码,能大幅减少运行时越界和死循环。
  • 做完后自己构造边界输入,逐项对照「空输入」「全相等」「有序/逆序」「重复基准」四个检查点,不急着看参考答案。
  • 每道题至少写两遍:第一遍追求正确,第二遍追求简洁和边界清晰;第三遍口头向同学讲清楚为什么这样写。

课程目录

整理中,敬请期待。