序言
1. 内容介绍
本章详细介绍了排序基础、插入排序、直接插入排序和希尔排序、交换排序、选择排序和归并排序
2. 理论目标
- 掌握树的定义
- 掌握二叉树的原理
- 掌握二叉树的遍历
- 掌握树的转换。
3. 实践目标
- 实现直接插入排序、希尔排序、交换排序、选择排序和归并排序的原理的底层代码。
4. 实践案例
无
5. 内容目录
- 排序基础
- 插入排序
- 直接插入排序和希尔排序
- 交换排序
- 选择排序和归并排序
第1节 排序基础
定义:排序是指将无序序列调整为有序序列的操作
排序按照在内存还是硬盘中分为内排序和外排序
排序的作用
排序的作用是将无序序列调整为有序序列
什么是内排序:内排序是指待排序列都在内存中进行的排序
内涵:内存中进行排序
为什么使用外排序
什么是外排序
定义:外排序是指待排序列无法一次装入内存,需要内、外存之间进行数据交互的排序
内涵:待排序列无法一次装入内存
内、外存数据交互
排序方式 | 元素存储位置 | 数据量 | 排序阶段 |
---|---|---|---|
内排序 | 内存中 | 适用于小数据量 | 一个阶段(内存中) |
外排序 | 内、外存交互 | 适用于大数据量 | 两个阶段(先内存、再外存) |
第2节 插入排序
什么是插入排序
定义:插入排序是指待插入有序序列中插入数据后仍保持有序的排序算法
插入排序分为 直接插入排序 和 希尔排序
正在上传…重新上传取消
插入排序的应用
课堂小结
第3节 直接插入排序和希尔排序
为什么使用直接插入排序
正在上传…重新上传取消
什么是直接插入排序
定义:直接插入排序是将待排数据插入到有序序列中适当位置的插入排序
直接插入排序的执行原理
直接插入排序的应用
直接插入排序的时间复杂度
最好情况:当数据正序时,执行效率最好,每次插入不用移动前面的元素,时间复杂度为O(N)
最坏情况:当数据反序时,其执行效率最差,每次插入前都需对元素后移,时间复杂度为O(N*2)
为什么使用希尔排序
什么是希尔排序
定义:希尔排序是将待排数据插入到有序序列中适当位置的插入排序
特点:
1.按下标的增量分组
2.每组使用直接插入排序
执行原理参考ppt中的动图
排序方式 | 排序类型 | 效率 | 稳定性 |
---|---|---|---|
直接插入排序 | 插入排序 | 比较次数较多 | 稳定 |
希尔排序 | 插入排序 | 更加高效 | 不稳定 |
希尔排序的应用
希尔排序的时间复杂度
希尔排序的时间复杂度为O(n3/2)
第4节 交换排序
知识回顾
请简述什么是排序
请简述排序分为哪几类
请简述什么是直接插入排序
请简述什么是希尔排序
定义:交换排序是根据两个元素比较的结果,直接交换位置的排序算法
交换排序分为 冒泡排序 和快速排序
为什么学习冒泡排序
什么是冒泡排序
定义:冒泡排序是按一定次序比较相邻元素互换位置的交换排序
如何实现冒泡排序
如何实现冒泡排序
如何实现冒泡排序的动画演示 请参考ppt
冒泡排序的时间复杂度
内容小结
为什么学习快速排序
什么是快速排序
定义:快速排序是在序列元素与选定基准元素比较分割为大小两部分的交换排序
如何实现快速排序
快速排序的应用
快速排序的时间复杂度
内容小结
第5节 选择排序和归并排序
知识回顾
请简述什么是冒泡排序?
请简述冒泡排序的实现思路?
请简述什么是快速排序?
请简述快速排序的实现思路?
为什么使用选择排序
为什么使用选择排序
什么是选择排序
定义:选择排序是指先在剩余序列中找出最小(大)值,
然后将最小(大)值与剩余序列中的第一个元素
交换的排序算法
选择排序分为:简单选择排序和堆排序
定义:简单选择排序是排序中仅选出最小(大)值,不保存比较结果的选择排序
如何实现简单选择排序
内容小结
请描述什么是选择排序?
请描述什么是简单选择排序?
请描述简单选择排序的工作原理?
简单选择排序的应用
思路分析
找出序列中的最小值,然后与序列中第一个元素的位置进行交换
在剩余序列中,继续查找最小值,与剩余序列的第一个元素位置交换
以此类推,直到将数组中所有的数据全部排序完毕
简单选择排序的时间复杂度
课堂编程一
思路分析
使用数组存储数据
编写简单选择排序实现代码
在外层循环内输出排序结果
内容小结
什么是归并排序
什么是归并排序
定义:归并排序是将拆分的子序列排序后合并成一个有序序列的排序算法
特点
1、将序列分成子序列
2、子序列是有序序列
3、合并子序列
分为 二路归并和多路归并
如何实现归并排序
归并排序的应用
归并排序的时间复杂度
归并排序的时间复杂度为O(nlog2n)
内容小结
开始实验