对于一个数组,尽可能地划分成两半(二分),加和最大的连续字数组或者在左边,或者在右边,或者跨越中间,一部分在左边,一部分在右边。 那么只要求出左半段数组的加和最大的连续子数组的和,求出右半段数组的加和最大的连续子数组的和,求出跨越中间的最大连续字数组的和,只要通过三者判断求出最大的那么就是整个数组最 ...
分类:
编程语言 时间:
2016-06-14 14:07:41
阅读次数:
303
二分搜索算法上运用分治策略的典型例子。 给定已排好序的n个元素a[0...n-1],现在要在这n个元素中找出一特定元素x。 首先想到的是用顺序搜索方法,逐个比较a[0...n-1]中元素,直至找出元素x或搜索整个数组后确定x不在其中。这个算法没有很好利用n个元素已排好序这个条件,因此在最坏情况下,顺 ...
分类:
其他好文 时间:
2016-05-10 23:19:34
阅读次数:
226
分治法是一种很强大的算法设计方法。基本思想是:将原问题分解为几个规模小但类似于原问题的子问题,递归的求解这些子问题,然后再合并这些子问题的解来建立原问题的解。 在分治策略中,递归地求解一个问题,在每层递归中应用如下三个步骤: (1)分解(Divide):将原问题分解为一些子问题,子问题的形式与原问题
分类:
其他好文 时间:
2016-03-10 23:21:32
阅读次数:
327
第三章渐进的基本O()....常用函数% 和 // 转换斯特林近似公式斐波那契数第四章分治策略:分解(递归)--解决(递归触底)--合并求解递归式的3种方法:1:代入法(替代法):猜测一个(靠经验)--数学归纳法·2:递归树法:画树p31【第3版中文】p51->递归式--证明3:主方法:快速,有些地...
分类:
编程语言 时间:
2016-01-25 12:59:34
阅读次数:
300
分治策略中有一个经典的算法就是合并排序。这个算法的精髓也是分治二字。分而治之。将一个大规模的问题切割成若干个相同的小问题,小问题的规模非常小,非常easy解决,攻克了小的问题后再对这些小问题的结果进行合并得到大规模问题的解答。合并排序便是分治策略中比較经典的算法。首先是合并。两个排列有序的数列经过合...
分类:
编程语言 时间:
2016-01-21 15:45:18
阅读次数:
170
分治策略分为三步:分解原问题:将原问题分解为一些子问题,子问题形式与原问题一样,只是规模更小。解决子问题:递归的求解出子问题。如果子问题规模足够小,则停止递归,直接求解。合并子问题:将子问题的解合并为原问题的解主方法公式:T(n)=aT(n/b)+f(n);它刻画了这样一个分治算法:生成a个子问题....
分类:
其他好文 时间:
2016-01-20 22:24:15
阅读次数:
123
这篇文章将讨论:1) 分治策略的思想和理论2) 几个分治策略的例子:合并排序,快速排序,折半查找,二叉遍历树及其相关特性。说明:这几个例子在前面都写过了,这里又拿出来,从算法设计的策略的角度把它们放在一起来比较,看看分治是如何实现滴。由于内容太多,我将再花一篇文章来写4个之前没有写过的分治算法:.....
分类:
其他好文 时间:
2016-01-12 01:18:18
阅读次数:
537
参考 《算法设计与分析》 第四章 分治法 Anany Levitin著 翻译版 清华大学出版社 在上一篇文章中,介绍了分治策略的思想,主定理,以及几个用分治策略的经典案例。这一篇文章将继续探讨分治算法的其他应用,包括大整数乘法和Strassen矩阵乘法,最近点对问题和凸包问题这4个算法,一般来...
分类:
其他好文 时间:
2016-01-12 01:15:06
阅读次数:
291
算法分析与设计复习2016年初,研一上学期期末考试前,复习并总结算法分析与设计科目的内容。复习过程参照《算法导论》中文第2版,同时参照PPT,章节划分根据PPT内容概要:第一章 概述第二章 插入排序&分治策略第三章 复杂度分析第四章 堆与堆排序第五章 快速排序第六章 线性时间排序第一章 概述算法的应...
分类:
编程语言 时间:
2016-01-09 23:05:22
阅读次数:
647
设有n=2k个选手参加比赛,要求设计一个满足一下要求的比赛日程表:(1)每个选手必须与其他的n-1个选手个比赛一次;(2)每个选手每天只能赛一次 。按此要求可以把比赛日程表设计成一个n行n-1列的二维表,其中第i行第j列表示第i个选手在 第j天比赛的选手。代码:(分治策略) 1 #include 2...
分类:
编程语言 时间:
2015-12-30 23:48:14
阅读次数:
291