随笔分类 - 算法与数据结构
摘要:什么是动态规划? 先来看看《算法导论》里面的解释:动态规划(dynamic programming)与分治法相似,都是通过组合子问题的解来求解原问题。动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题。这种算法对每个子子问题只求解一次,将其解保存在一个表格中,从而无需每次求解一个子子问题时都重新计算,避免了不必要的计算工作。 设计一个动态规划算法需要4步: 1.描述最优解的结构。 2.递归定义最优解的值 3.按自底向上的方式计算最优解的值 4.由计算出的结果构造一个最优解。 这4步中的前3步是动态规划的基础,即前3步用自底向上的方法,从最底层的已经有解的子子问题...
阅读全文
摘要:最近对几个常见排序算法进行复习和总结,发现认真思考一下然后代码练习一下,这些排序基本上不会有太大难度。做任何事都是一样,难在你把它想得太难了,逼下自己,动脑思考一下,事情就会变得很简单。 下面是我个人对常见几个排序算法的理解和代码实现,如有什么错误还请指出。1.最简单的排序 -- 冒泡排序 原理就是:从第一个数开始,和后面的数两两进行比较;若前面的数比后面的数大,则将其后移。一轮下来,最后一个数一定是最大的。所以现在可以抛弃最后一个数,从第一个数开始,到倒数第二个数,重复以上步骤。依此类推,最后只剩下两个数比较交换完后,排序结束。 图1.冒泡排序(动态图来自维基百科,下同) 前面几...
阅读全文

浙公网安备 33010602011771号