第5天:排序(下)

小白记录日常学习

今日任务总览

| 步骤 | 内容 | 时间 |

|------|------|------|

| 1 | 看B站视频:5.1~5.4(共10节) | 54分钟 |

| 2 | 读下面的核心知识点 | 15分钟 |

| 3 | 手打并运行3个练习 | 50~70分钟 |

| 4 | 自检 | 10分钟 |

 看视频指南

 5.1 快速排序(4小节,25分钟)

| 小节 | 集号 | 标题 |

|------|:--:|------|

| 5.1.1 | P114 | 算法概述 |

| 5.1.2 | P115 | 选主元 |

| 5.1.3 | P116 | 子集划分 |

| 5.1.4 | P117 | 算法实现 |

 5.2 表排序(2小节,13分钟)

| 小节 | 集号 | 标题 |

|------|:--:|------|

| 5.2.1 | P118 | 算法概述 |

| 5.2.2 | P119 | 物理排序 |

> 表排序和多关键字排序以理解概念为主,无独立练习。

 5.3 基数排序(3小节,12分钟)

| 小节 | 集号 | 标题 |

|------|:--:|------|

| 5.3.1 | P120 | 桶排序 |

| 5.3.2 | P121 | 基数排序 |

| 5.3.3 | P122 | 多关键字的排序 |

 5.4 排序算法的比较(1小节,4分钟)

| 小节 | 集号 | 标题 |

|------|:--:|------|

| 5.4.1 | P123 | 排序算法的比较 |

 核心知识点(视频精华)

 一、快速排序(P114-P117)

> 选基准 → 小的放左边、大的放右边 → 递归排两边。

| 步骤 | 说明 |

|------|------|

| 选主元 | 选一个数作为"分界"(通常选最右或中位数) |

| 划分 | 比 pivot 小的放左边,大的放右边 |

| 递归 | 对左右两半重复同样操作 |

时间复杂度:O(n log n) 平均,O(n²) 最坏。不稳定。

 二、表排序(P118-P119)

> 数据太大搬不动?只排"索引表",不搬数据本身。

适用场景:数据元素很大(如结构体数组),交换成本高。

 三、桶排序 / 基数排序(P120-P122)

> 桶排序:数据分桶 → 桶内排序 → 合并

> 基数排序:按位(个位→十位→百位)逐轮分桶收集

时间复杂度:O(n) ~ O(n log n)。稳定(基数排序)。

 四、排序算法总结(P123)

| 算法 | 平均 | 最坏 | 稳定? |

|------|:--:|:--:|:--:|

| 冒泡 | n² | n² | 是 |

| 插入 | n² | n² | 是 |

| 希尔 | n¹·³ | n² | 否 |

| 选择 | n² | n² | 否 |

| 堆 | n log n | n log n | 否 |

| 归并 | n log n | n log n | 是 |

| 快速 | n log n | n² | 否 |

| 基数 | O(n) | O(n) | 是 |

> 基数排序复杂度实际为 O(d×(n+k)),d为位数、k为基数。表中 O(n) 为简化描述。

 动手练习

|  | 练习 | 对应视频 | 文件名 |

|---|------|:--:|--------|

| 1 | 快速排序 | P114-P117 | `practice1_quicksort.c` |

| 2 | 桶排序 | P120-P121 | `practice2_bucket.c` |

| 3 | 排序算法耗时对比 | P123 | `practice3_sort_compare.c` |

 练习1:快速排序

对应 P114-P117:快速排序最核心的是"分区"逻辑,用纸画出第一轮的分区过程。

 练习2:桶排序

对应 P120-P121:分桶→桶内排序→收集,理解这个流程就懂了基数排序的思想。

 练习3:排序对比

对应 P123:同一组数据,三种排序的耗时差多少?亲眼看到 O(n²) 和 O(n log n) 的差距。measure() 中 `void (sort)(int[], int)` 是函数指针——看不懂语法没关系,看调用方式 `measure(bubble_sort, ...)` 就行。

 今日自检

- [ ] 能说出快速排序的三个步骤(选基准→分区→递归)

- [ ] 能解释桶排序的分桶→排序→收集流程

- [ ] 能说出至少三种 O(n log n) 和三种 O(n²) 的排序算法

- [ ] 三个练习都编译运行成功

 明天预告

第6天:自选项目一 —— 学生管理系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值