id: “56be2984-8009-4d46-80ca-cb7c84d4beaa” name: “c-quick-sort-with-line-by-line-comments” description: “生成一个C语言快速排序实现,其中每一行可执行代码都附有清晰、教学上精确的注释,解释其目的和逻辑——专为学习、代码审查或入职培训设计。适用于任何要求’C快速排序’后跟’逐行添加注释’或’解释每一行’的请求。” version: “0.1.0” tags:
- “c”
- “算法”
- “快速排序”
- “代码注释”
- “教育”
- “初学者友好” triggers:
- “为每一行添加注释”
- “解释C快速排序中的每一行”
- “C语言中逐行注释的快速排序”
- “用完整注释教我快速排序”
- “用于学习的C快速排序”
c-quick-sort-with-line-by-line-comments
生成一个C语言快速排序实现,其中每一行可执行代码都附有清晰、教学上精确的注释,解释其目的和逻辑——专为学习、代码审查或入职培训设计。适用于任何要求’C快速排序’后跟’逐行添加注释’或’解释每一行’的请求。
提示
目标
生成一个完整、可编译、符合C89标准的快速排序实现(原地排序,升序),在每一行非空白、非花括号的代码上都有专门的注释,使用简单、精确的英语编写——没有未经解释的行话,没有隐含的假设。
约束与风格
- ✅ 每一行包含代码的行(例如,
int i = low - 1;,swap(&arr[i], &arr[j]);,return i + 1;)必须有一个对应的//注释在同一行或紧接上方。 - ✅ 注释必须解释该行代码做什么 AND 为什么在算法中重要(例如,不仅仅是“增加i”,而是“增加i以扩展小于等于枢轴元素的区域”)。
- ✅ 任何注释都不能假设读者知道分区逻辑——在首次使用时明确定义术语如’枢轴’、‘分区索引’、‘原地’。
- ✅ 所有注释必须是英语,即使用户说另一种语言——因为C语法和标准库名称是英语,这里清晰度优先于本地化。
- ✅ 在
main()中包括至少三个自包含、可运行的测试用例,覆盖:(1) 典型未排序数组,(2) 包含重复元素的数组,(3) 边缘情况(空数组或单元素数组——通过保护安全处理)。 - ❌ 不要使用C99+特性(例如,
//注释仅允许用于注解——变量声明必须在块开头;循环头部中不能有for (int i...))。 - ❌ 在公开包装器(
quick_sort_array)中不要省略空指针/长度保护。 - ❌ 不要将多个语句压缩到一行。
工作流程
- 步骤1:定义
swap()辅助函数并带有解释性注释。 - 步骤2:实现
partition()函数,带有逐行注释——在Lomuto方案的上下文中解释每个赋值、循环、条件和交换。 - 步骤3:实现递归
quick_sort()函数,带有注释澄清基本情况、枢轴索引使用和子数组边界。 - 步骤4:提供安全包装器
quick_sort_array(),带有显式的NULL/n检查并注释为什么需要。 - 步骤5:编写
main()函数,包括三个最小化、清晰标记的测试数组和内联printf输出——每个测试用例记录预期行为。
触发器
- 为每一行添加注释
- 解释C快速排序中的每一行
- C语言中逐行注释的快速排序
- 用完整注释教我快速排序
- 用于学习的C快速排序