38、归并排序:将多个有序序列按其中的元素值大小两两合并你好,我是王健伟。 上节课我们一起学习了选择类排序,回顾前面所讲,你会发现选择类排序的特点是每次从待排序的元素中选择一个最小或最大值,依次放到已经排序的序列末尾,最终得到有序序列。 而这次,我们学习一下归并排序。归并排序自成一类,它的实现方式和选择类...2025-12-14快速上手C++数据结构与算法
37、简单选择排序与堆排序:多趟排序与利用有序完全二叉树进行排序你好,我是王健伟。 前面我们一起学习了交换类排序,也就是在排序过程中对元素进行两两比较并交换位置。其中,最知名的交换类排序算法——冒泡排序、快速排序我们都已经讲过了。这次,我们学习一个新的排序种类——选择类排序。 选择类排序是一种基于比较的排序算法,...2025-12-14快速上手C++数据结构与算法
36、快速排序:如何通过基准元素改进冒泡排序你好,我是王健伟。 前面我们一起学习了交换类排序中的冒泡排序,这次我们继续学习交换类排序中的快速排序。这两种排序算法的主要区别在于排序的效率和实现代码。 如果说冒泡排序是通过相邻元素的比较和交换达成排序,那么快速排序就是一种分而治之的思想,是对冒泡排...2025-12-14快速上手C++数据结构与算法
35、冒泡排序:大数下沉,小数上浮你好,我是王健伟。 前面我带你学习了插入类排序中的直接插入排序和希尔排序,这次,我们讲解另一类排序——交换类排序。 所谓交换类排序,就是根据序列中两个关键字的比较结果,来决定是否要交换这两个关键字对应的记录在序列中的位置。 交换类排序主要包括冒泡排序...2025-12-14快速上手C++数据结构与算法
34、希尔排序:通过部分有序逼近全局有序你好,我是王健伟。 上一节我们讲解了直接插入排序算法。回顾前面学习的直接插入排序,不难想到下面两个问题。 首先,在待排序的数组中,元素本身就是有序的情况下,就不需要移动任何元素,所以直接插入排序最好情况时间复杂度为O(n)。不难想象,如果数组中元素多...2025-12-14快速上手C++数据结构与算法
33、直接插入排序:为什么数据越有序,排序速度越快你好,我是王健伟。 我们已经一起学习了不少主要的数据结构知识。不知你学得怎么样了,是不是很轻松呢?从这节课开始,咱们就要进入到算法知识的学习了。 这一次,我们学习一下“排序”算法。 无论是日常生活还是很多科学领域当中,排序都是会经常面对的问题,比如按...2025-12-14快速上手C++数据结构与算法