Curriculum Framework

课程大纲

Lesson 1

时间复杂度分析

课程内容:

本节课初步了解数据结构与算法的重要性,了解了数据结构与算法中的重要概念:时间复杂度。并通过一些小例子了解如何去分析时间复杂度。

知识点:

1、数据结构与算法的重要性
2、大O表示法
3、常见时间复杂度
4、分析算法的时间复杂度

Lesson 2

队列

课程内容:

本节课了解了队列这种线性表数据结构,重点学习了队列“先进先出”的特点,以及如何用代码实现队列。

知识点:

1、队列的特点
2、代码实现队列
3、队列的操作
4、队列的应用

Lesson 3

栈与递归

课程内容:

本节课主要了解线性表数据结构——栈,学习了栈“后进先出”的特点,以及如何实现栈,重点学习了栈的应用以及栈与递归的关系。

知识点:

1.栈的特点
2.代码实现栈
3.栈的应用场景
4.栈与递归的关系

Lesson 4

冒泡排序与插入排序

课程内容:

本节课主要了解了两种排序算法——冒泡排序和插入排序。详细分析了两种排序算法的原理,以及它们的时间复杂度,最后对它们的实际效率进行了比较。

知识点:

本节课主要了解了两种排序算法——冒泡排序和插入排序。详细分析了两种排序算法的原理,以及它们的时间复杂度,最后对它们的实际效率进行了比较。

Lesson 5

快速排序

课程内容:

首先通过案例理解分区点构造的过程,然后使用Python语言实现快速排序,最后对其平均时间复杂度进行分析

知识点:

1.快速排序的思想
2.分区点构造
3.快速排序的时间复杂度

Lesson 6

归并排序

课程内容:

通过案例理解归并操作,定义函数实现有序数列归并;了解分而治之的思想,结合该思想使用Python语言实现归并排序

知识点:

1.归并函数
2.分而治之
3.归并排序的递归实现

Lesson 7

二分查找

课程内容:

本节课在上两节课的基础上学习了一种查找算法——二分查找。结合生活场景介绍了二分查找的思想,并利用代码实现二分查找,分析它的时间复杂度,以及实际应用场景。

知识点:

1.二分查找的思想
2.递归与非递归实现
3.二分查找的时间复杂度
4.二分查找的特点与应用

Lesson 8

散列表

课程内容:

通过MD5了解Hash思想;通过学习散列函数设计和冲突处理的方法深刻理解散列表这种重要的数据结构

知识点:

1.MD5和Hash
2.散列函数的设计
3.冲突处理

Lesson 9

链表

课程内容:

本节课了解了数据结构的分类,初步熟悉了内存的工作原理,以及线性表的概念,重点学习了链表这个数据结构。

知识点:

1、内存的工作原理
2、线性表与非线性表
3、链表
4、代码实现链表

Lesson 10

二叉树与摩尔斯电码

课程内容:

本节课通过引入摩尔斯电码,并将其用二叉树来实现。学习了二叉树的节点表示,二叉树的构建,查找与遍历。

知识点:

1.摩尔斯电码的表示
2.二叉树节点的表示
3.二叉树的构建、查找和遍历

Lesson 11

k近邻方法

课程内容:

本节课利用花朵的多维特征数据,引入机器学习中的k近邻方法,计算未知数据与最近邻的k个点的距离,从而给出未知花朵类型的预测结果。最后介绍了一种高效的高维数据查找方式:kd树。

知识点:

1.k近邻方法的原理
2.距离度量
3.数据归一化
4.k值的分析
5.交叉验证得出最优k值
6.kd树的构造原理

Lesson 12

kd树

课程内容:

本节课利用kd树实现了高维数据的最近邻查找。通过二维样例详细分析了二维平面中数据对区域的划分和对叶子节点的查找,通过叶子节点向根节点的回溯来逐步缩小查找范围,得到最近邻点。

知识点:

1.kd树的构建过程
2.kd树与区域划分
3.叶子节点的查找
4.叶子节点到根节点的回溯搜索分析

继续了解 NOIP Level1