《计算机算法设计与分析》(第3版) 王晓东 电子工业出版社递归与分治策略二分搜索算法二路归并排序快速排序动态规划矩阵连乘问题斐波那契数列贪心算法最优装载活动安排问题其它可用贪心算法求解的问题回溯法图的m着色问题素数环问题分支限界法装载问题
分类:
编程语言 时间:
2015-07-12 21:31:26
阅读次数:
183
?在用分治法解决问题时,由于子问题的数目往往是问题规模的指数函数,因此对时间的消耗太大。?动态规划的思想在于,如果各个子问题不是独立的,不同的子问题的个数只是多项式量级,而我们能够保存已经解决的子问题的答案,在需要的时候再找出已求得的答案,这样就可以避免大量的重复计算。由此而来的基本思路是,用一个表...
分类:
其他好文 时间:
2015-06-07 09:27:57
阅读次数:
118
说到算法,暑假就要去实习了,这时才感觉到数据结构和算法的重要性,虽然大二时候已经学过,但是基本用不到,导致现在基本忘了,现在重新拾起,重新把以前学过的和没有学过的算法都理一遍实现一遍!!!
给自己一个任务——每天一个算法!!!
快速排序算法:是对冒泡排序的一种改进,若初始记录序列按关键字pivotNum有序或基本有序,则将会蜕化为冒泡排序,此时时间复杂度为O(n²)。否则其平均时间复杂度为O(...
分类:
编程语言 时间:
2015-05-27 14:07:35
阅读次数:
189
利用一棵二叉树的中序遍历的结果数组和后续遍历的结果数组复原该树:采用分治策略,解析如下图:如图:中序遍历数组的division特征为左(0 --> x) 根(x + 1) 右(x + 2 --> length - 1) 后序遍历数组的division特征为左(0 --> x) 根(x + 1 ...
分类:
其他好文 时间:
2015-05-27 11:46:53
阅读次数:
125
1、J48原理 基于从上到下的策略,递归的分治策略,选择某个属性放置在根节点,为每个可能的属性值产生一个分支,将实例分成多个子集,每个子集对应一个根节点的分支,然后在每个分支上递归地重复这个过程。当所有实例有相同的分类时,停止。 问题:如何选择根节点属性,建立分支呢? 例如:weather.a...
分类:
其他好文 时间:
2015-05-23 14:03:41
阅读次数:
370
一. 题目描述 使用快速排序对n个元素进行排序。 二. 题目分析 快速排序是基于分治策略的一种排序算法。其基本思想是 通过一趟排序,将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录进行下一趟排序,以达到整个序列有序。 三. 算法实现 #inclu...
分类:
编程语言 时间:
2015-05-16 21:48:48
阅读次数:
261
一. 题目描述 使用归并排序对n个元素进行排序。 二. 题目分析 归并排序算法是用分治策略实现对n个元素进行排序的算法。其基本思想是: 将待排序元素分成大小大致相同的2个子集合,分别对2个子集合进行排序,最终将排好序的子集合合并成为所要求的排好序的集合。 三. 算法实现 #include #defi...
分类:
编程语言 时间:
2015-05-16 11:42:27
阅读次数:
225
一. 基本思想 分治法的基本思想是,将一个难以直接解决的大问题,分割成一些规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解这些子问题,然后将各子问题的解合并得到原问题的解。(分-治-合)二. 适用条件 分治法所能解决的问题一般具有以下几个特征: 该问题的规模缩小到一定的程度就可以容易地....
分类:
其他好文 时间:
2015-05-13 21:42:57
阅读次数:
211
merge sort 是一种采用分治策略的排序方法。其最坏时间复杂度为 O(nlgn) (对数以2为底)可以先列出递归式,然后画递归树来证明. 也可以用master theorem (主定理)来证明.总之,最关键的就是要列出分治过程中的递归式merge sort的递归式为:C++ 代码如下所示:/*...
分类:
其他好文 时间:
2015-04-26 21:08:00
阅读次数:
171