数据结构与算法
文章平均质量分 95
YAFree123
这个作者很懒,什么都没留下…
展开
-
KMP算法原理及实现
引言 串或字符串,属于线性结构,自然的可以利用向量(Vector)或者链表(List)等序列结构加以实现,通常具有如下两种特性:结构简单:组成串的字符集合本身规模不大,典型的如二进制串,字符集仅有两个元素串规模巨大:通常由这些字符集可以组成超大规模的文本数据 以字符串形式表示的海量文本数据的高效处理技术,一直都是相关领域的研究重点,而KMP算法就是,模式匹配算法中最出名的算法之一。...原创 2019-08-24 22:51:04 · 1193 阅读 · 0 评论 -
快速排序算法(以int型数组为例)
快速排序的本质思想是分而治之 一个待排序列,怎么 让它变得有序呢?我们先来看看一个有序的序列所具有的特征:当前指向的位置上的元素,一定不大于它右边位置的元素,也一定不小于它左边的元素,并且它的下标(秩),正是比他小的元素的数量 就如箭头指向所指的已排序的数组其中的某个位置,该位置的值为5,不大于任何它右边位置的值,也不小于任何它左边的值。 再考虑一下极端情况:如果数组的长度只有1,那...原创 2019-08-21 17:27:42 · 1849 阅读 · 0 评论 -
归并排序算法(以int型数组为例)
核心思想归并排序的构思朴实却亦深刻,作为一个算法既古老又仍不失生命力。在排序算法的发展历史上,归并排序具有特殊的低位,它是第一个可以在最坏环境情况下依然保持o(nlogn)运行时间的确定性排序算法。 归并算法的核心思想是分而治之,与快速排序的核心思想类似,但在它们的侧重点各不相同,快速排序算法重点在于分,而归并排序的重点在于合!! 关于快速排序算法的介绍可以参考往期文章:快速排序算法...原创 2019-08-21 17:30:55 · 315 阅读 · 0 评论 -
0 1背包问题
简述 0 1 背包可以说是讲述动态规划的最适合入门的问题了,所谓动态规划,其实可以简单理解为一种特殊的分而治之的策略,和我们常见的如二分查找等分而治之策略的不同在于,可以采用分而治之策略的问题,它划分出来的若干子问题是没有交集的,即子问题的求解完全不受其他因素的干扰,就如下图所示: 我们只需要将目光聚集解决如何解决每一个小问题,再将所有待解决的小问题合并,复杂的大问题也就迎刃而解。 但...原创 2019-09-18 11:22:58 · 181 阅读 · 0 评论