• 第07章 第07章 排序


    序言

    1. 内容介绍

    本章详细介绍了排序基础、插入排序、直接插入排序和希尔排序、交换排序、选择排序和归并排序

    2. 理论目标

    • 掌握树的定义
    • 掌握二叉树的原理
    • 掌握二叉树的遍历
    • 掌握树的转换。

    3. 实践目标

    • 实现直接插入排序、希尔排序、交换排序、选择排序和归并排序的原理的底层代码。

    4. 实践案例

    5. 内容目录

    • 排序基础
    • 插入排序
    • 直接插入排序和希尔排序
    • 交换排序
    • 选择排序和归并排序

    第1节 排序基础

    1.1什么是排序

    定义:排序是指将无序序列调整为有序序列的操作

    排序按照在内存还是硬盘中分为内排序和外排序

    排序的作用

    排序的作用是将无序序列调整为有序序列

    1.2 内排序和外排序的概念

    什么是内排序:内排序是指待排序列都在内存中进行的排序

    内涵:内存中进行排序

    为什么使用外排序

    什么是外排序

    定义:外排序是指待排序列无法一次装入内存,需要内、外存之间进行数据交互的排序

    内涵:待排序列无法一次装入内存
    内、外存数据交互

    1.3 内排序、外排序对比

    排序方式元素存储位置数据量排序阶段
    内排序内存中适用于小数据量一个阶段(内存中)
    外排序内、外存交互适用于大数据量两个阶段(先内存、再外存)

    第2节 插入排序

    2.1 插入排序的概念

    什么是插入排序

    定义:插入排序是指待插入有序序列中插入数据后仍保持有序的排序算法

    插入排序分为 直接插入排序 和 希尔排序

    2.2 插入排序的实现原理

    正在上传…重新上传取消 

    2.3 插入排序的代码实现

    插入排序的应用

          

    课堂小结

    第3节 直接插入排序和希尔排序

    3.1 直接插入排序的原理和代码实现

    为什么使用直接插入排序

    正在上传…重新上传取消

    什么是直接插入排序

    定义:直接插入排序是将待排数据插入到有序序列中适当位置的插入排序

    直接插入排序的执行原理

    直接插入排序的应用

        

    直接插入排序的时间复杂度

    最好情况:当数据正序时,执行效率最好,每次插入不用移动前面的元素,时间复杂度为O(N)

    最坏情况:当数据反序时,其执行效率最差,每次插入前都需对元素后移,时间复杂度为O(N*2)

    3.2 希尔排序的原理和代码实现

    为什么使用希尔排序

    什么是希尔排序

    定义:希尔排序是将待排数据插入到有序序列中适当位置的插入排序

    特点:
    1.按下标的增量分组
    2.每组使用直接插入排序

    执行原理参考ppt中的动图

    3.3 直接插入排序、希尔排序对比

    排序方式排序类型效率稳定性
    直接插入排序插入排序比较次数较多稳定
    希尔排序插入排序更加高效不稳定

    希尔排序的应用

        

    希尔排序的时间复杂度

    希尔排序的时间复杂度为O(n3/2)

    第4节 交换排序

    知识回顾

    请简述什么是排序
    请简述排序分为哪几类
    请简述什么是直接插入排序
    请简述什么是希尔排序

    4.1 什么是交换排序

    定义:交换排序是根据两个元素比较的结果,直接交换位置的排序算法

    交换排序分为 冒泡排序 和快速排序

    4.2 交换排序之冒泡排序

    为什么学习冒泡排序

    什么是冒泡排序

    定义:冒泡排序是按一定次序比较相邻元素互换位置的交换排序

    如何实现冒泡排序

    如何实现冒泡排序

    如何实现冒泡排序的动画演示 请参考ppt

       

    冒泡排序的时间复杂度

        

    内容小结

    4.3交换排序之快速排序

    为什么学习快速排序

    什么是快速排序

    定义:快速排序是在序列元素与选定基准元素比较分割为大小两部分的交换排序

    如何实现快速排序

    快速排序的应用

    快速排序的时间复杂度

            

    内容小结

    第5节 选择排序和归并排序

    知识回顾

    请简述什么是冒泡排序?
    请简述冒泡排序的实现思路?
    请简述什么是快速排序?
    请简述快速排序的实现思路?

    5.1 选择排序的概念

    为什么使用选择排序

    为什么使用选择排序

    什么是选择排序

    定义:选择排序是指先在剩余序列中找出最小(大)值,
    然后将最小(大)值与剩余序列中的第一个元素
    交换的排序算法

    选择排序分为:简单选择排序和堆排序

    5.2 什么是简单选择排序

    定义:简单选择排序是排序中仅选出最小(大)值,不保存比较结果的选择排序

    如何实现简单选择排序

       

    内容小结

    请描述什么是选择排序?
    请描述什么是简单选择排序?
    请描述简单选择排序的工作原理?

    简单选择排序的应用

    思路分析
    找出序列中的最小值,然后与序列中第一个元素的位置进行交换
    在剩余序列中,继续查找最小值,与剩余序列的第一个元素位置交换
    以此类推,直到将数组中所有的数据全部排序完毕

    简单选择排序的时间复杂度

    课堂编程一
    思路分析
    使用数组存储数据
    编写简单选择排序实现代码
    在外层循环内输出排序结果

         

    内容小结

    5.3 为什么使用归并排序

    什么是归并排序

    什么是归并排序

    定义:归并排序是将拆分的子序列排序后合并成一个有序序列的排序算法

    特点
    1、将序列分成子序列
    2、子序列是有序序列
    3、合并子序列

    分为 二路归并和多路归并

    如何实现归并排序

      

    归并排序的应用

        

    归并排序的时间复杂度

    归并排序的时间复杂度为O(nlog2n)

             

    内容小结

    开始实验

    第6节 附录

  • 相关阅读:
    TCP、IP和HTTP的区别和联系
    【秋招面经搬运】字节一面
    网站客服系统搭建,为企业提供更好的客户体验(ttkefu)
    离线强化学习(Offline RL)系列7: (状态处理)Koopman-Q学习:通过动力学对称性的状态空间数据增强方法
    element-ui+vue上传图片和评论现成完整html页面
    写一个带参数的宏MIN(x, y),这个宏输入两个 参数并返回较小的一个。
    学会 arthas,让你 3 年经验掌握 5 年功力!
    solidity开发环境配置,vscode搭配remix
    通过浏览器F12开发者工具的javascript控制台给Vue表单赋值
    linux升级openssh9
  • 原文地址:https://blog.csdn.net/a1234556667/article/details/126447199