40、串的朴素模式匹配算法:暴力但容易理解

你好,我是王健伟。 前面我们在讲串的基本操作的时候,你一定发现了,我们没有提到在一个字符串中寻找子串的问题。这个寻找操作,不仅是这种数据结构中所要面对的最常见的算法,更是最重要的算法之一。这节课,我们就专门来看一看,怎么去找到这个子串。 问题的提出对...

39、串的顺序和链式存储结构:定长数组与动态数组

你好,我是王健伟。 前面我带你一起学习了各种各样的排序算法。从这节课开始,我们就要进入到字符串的学习了。 字符串作为一种数据结构,在计算机科学领域也有着比较广泛的应用。比如在搜索引擎中搜索一个关键词、在文章或发言中过滤或屏蔽一些敏感词等。这些关键词、...

38、归并排序:将多个有序序列按其中的元素值大小两两合并

你好,我是王健伟。 上节课我们一起学习了选择类排序,回顾前面所讲,你会发现选择类排序的特点是每次从待排序的元素中选择一个最小或最大值,依次放到已经排序的序列末尾,最终得到有序序列。 而这次,我们学习一下归并排序。归并排序自成一类,它的实现方式和选择类...

37、简单选择排序与堆排序:多趟排序与利用有序完全二叉树进行排序

你好,我是王健伟。 前面我们一起学习了交换类排序,也就是在排序过程中对元素进行两两比较并交换位置。其中,最知名的交换类排序算法——冒泡排序、快速排序我们都已经讲过了。这次,我们学习一个新的排序种类——选择类排序。 选择类排序是一种基于比较的排序算法,...

36、快速排序:如何通过基准元素改进冒泡排序

你好,我是王健伟。 前面我们一起学习了交换类排序中的冒泡排序,这次我们继续学习交换类排序中的快速排序。这两种排序算法的主要区别在于排序的效率和实现代码。 如果说冒泡排序是通过相邻元素的比较和交换达成排序,那么快速排序就是一种分而治之的思想,是对冒泡排...