news 2026/8/11 10:12:22

第5天:排序(下)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第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天:自选项目一 —— 学生管理系统

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/11 10:11:30

Knock 用法总结

成事不说,遂事不谏,既往不咎。 导航 1 工具介绍2 示例配置3 杂七杂八 1、工具介绍knock 是一个 Linux 下的“端口敲门(Port Knocking)” 服务,它的主要作用是:通过监听特殊端口访问顺序,动态修…

作者头像 李华
网站建设 2026/8/11 10:11:21

Claude Code Skills实战:从插件思维到工作流增强的AI开发提效指南

1. 项目概述:从“翻译”到“深度实践”最近在AI开发工具领域,Claude Code 的热度持续攀升。作为一个深度参与过多个AI辅助开发项目的老兵,我最初看到《构建 Claude Code 的经验:我们如何使用 Skills》这篇外文分享时,第…

作者头像 李华
网站建设 2026/8/11 10:09:38

UE5 AI感知与行为树联调:实现具备视觉记忆的智能NPC

1. 项目概述:让NPC真正“活”起来在虚幻引擎5(UE5)里捣鼓AI,很多朋友可能都卡在了一个点上:我明明给NPC配了行为树,让它能走能跑,但它怎么就跟个睁眼瞎一样,对近在咫尺的玩家毫无反应…

作者头像 李华
网站建设 2026/8/11 10:08:04

3分钟快速安装Adobe插件:开源跨平台解决方案终极指南

3分钟快速安装Adobe插件:开源跨平台解决方案终极指南 【免费下载链接】ZXPInstaller Open Source ZXP Installer for Adobe Extensions 项目地址: https://gitcode.com/gh_mirrors/zx/ZXPInstaller 还在为Adobe插件的繁琐安装流程头疼吗?告别复杂…

作者头像 李华
网站建设 2026/8/11 10:05:17

二极管基础教程:从单向导通的原理到整流、稳压、LED驱动的实践指南

这次我们来看一个面向电子初学者的二极管基础教程。二极管,这个被称为“电子阀门”的元件,是几乎所有电路板上的常客。它的核心特性“单向导通”听起来简单,但理解不深就容易在电路设计、故障排查时踩坑。本文的目标很直接:让你从…

作者头像 李华
网站建设 2026/8/11 10:04:32

7款照片转pdf工具盘点:手机自带、在线免费与电脑离线方案一网打尽

上周四下午,财务在企业微信里弹来一条消息:上周出差那沓纸质发票,今天下班前合并成一份 PDF 交上去,缺一张都不行。我蹲在工位上用手机把十几张发票一张张拍完,相册里横七竖八躺了一堆图片,有的竖拍有的横拍…

作者头像 李华