说到搜索,我们第一反应都是深度优先搜索(DFS)和广度优先搜索(BFS)这两种经典的搜索算法,这两种方法各有千秋在不同的领域都有非常广泛的应用。那么就会有好奇的同学问道了,我们能不能将两者的优点结合起来呢?这不,迭代加深搜索或许就是这个问题最好的解答。 DFS or BFS 说起搜索,就不得不提到深度优先搜索(DFS)和广度优先搜索(BFS)这两种搜索算法。 我们都知道 DFS 就是“一...
众所周知,人都是贪心的。这里的贪心和我们贪心算法的贪心是一致的,就是我们会尽量追求一个问题解决的最优解。但是在贪心算法当中,我们只是在意一个问题的局部最优解,这往往可能让我们远离最后的全局最优解。那有没有什么方法能够让我们在在贪心的过程总不断摸索不断修改得到最终的全局最优解呢?反悔贪心就是其中的一种。 什么是反悔贪心 众所周知,正常的贪心算法是指在对问题求解时,总是做出在当前看来是最好的...
军训终于结束了呀QwQ(翘了两个星期的网络赛(逃)),在程序设计课上刷学校OJ的时候,发现世界上居然还有BFPRT这种神仙算法。什么你也没听过?没事下面我们就通过一道例题来一步一步了解神奇的BFPRT算法。 思考一下 如果给定一个n个数的数组,要你输出数组中第k大数,该怎么做?这时你也许会振臂高呼:“水题!”的确,在n不太大的时候,是有很多方法的,比如: 1.将n个数排序(比如快速排序...
这几天刚刚重拾打程序的激情,还有些生疏啊……拜读了大佬的Blog后,突然想码一篇模拟退火。今天就让我们一同从爬山算法到模拟退火,走进神奇的玄学算法。 爬山算法 算法简介 爬山算法是local search(局部搜索)算法中最简单的一种。当我们遇到的问题的解空间很大时,我们想从中直接获取最优解是很耗时间的。但是,我们可以做到的是,我们可以从一个小的解空间短时间获得最优解,这就是local ...
由于准备高考的缘故大半年没更新了呀……最近搞完自主招生终于可以慢慢补档了。最近通过大佬的BLOG初略地复习了一下这两种排序。今天,就让我们一同从桶排序到基数排序,走进神奇的排序算法吧! 初级-桶排序 一说到排序算法,可能不少同学都会第一时间喊出"我大快排天下第一!"其实不然。我们知道快排这种基于比价的排序算法时间复杂度下限是 O(n log n) 。至于为什么,我们可...