数据结构与算法之美
dota爱好者
略
展开
-
二分查找
一、什么是二分查找?二分查找针对的是一个有序的数据集合,每次通过跟区间中间的元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间缩小为0 。二、过程分析时间复杂度假设数据大小是n,每次查找后数据都会缩小为原来的一半,最坏的情况下,直到查找区间被缩小为空,才停止。所以,每次查找的数据大小变化是:当n/(2的k次幂)=1时,k的值就是总共缩小的次数,也是查找的总次...原创 2019-05-07 15:26:35 · 1199 阅读 · 0 评论 -
字符串匹配
主串和模式串在字符串A中查找字符串B,那字符串A就是主串,字符串B就是模式串。我们把主串的长度记作n,模式串的长度记作m。因为我们是在主串中查找模式串,所以n>m。几种单模式串匹配算法BF(暴力)算法RK算法BM算法KMP算法1. BF(Brute Force)算法时间复杂度O(n*m),其中n是主串长度,m是模式串长度。缺陷:忽略了已检测过的文本信息。2. ...原创 2019-06-27 19:44:14 · 6536 阅读 · 0 评论 -
八皇后问题
背景在我们的一生中,会遇到很多重要的岔路口。在岔路口上,每个选择都会影响我们今后的人生。有的人在每个岔路口都能做出最正确的选择,最后生活、事业都达到了一个很高的高度;而有的人一路选错,最后碌碌无为。如果人生可以量化,那如何才能在岔路口做出最正确的选择,让自己的人生“最优”呢?我们可以借助前面学过的贪心算法,在每次面对岔路口的时候,都做出看起来最优的选择,期望这一组选择可以使得我们的人生...原创 2019-07-11 16:41:08 · 1343 阅读 · 0 评论 -
01背包问题-回溯法
背景0-1背包是非常经典的算法问题,很多场景都可以抽象成这个问题模型。这个问题的经典解法是动态规划。不过还有一种简单但没有那么高效的解法,这里用的回溯算法。0-1背包问题有很多变体,我这里介绍一种比较基础的。我们有一个背包,背包总的承载重量是Wkg。现在我们有n个物品,每个物品的重量不等,并且不可分割。 我们现在期望选择几件物品,装载到背包中。在不超过背包所能装载重量的前提下,如何让背包中...原创 2019-07-11 19:55:48 · 3830 阅读 · 0 评论