算法
文章平均质量分 56
njuzpw
这个作者很懒,什么都没留下…
展开
-
“分治法”排序的过程
有很多算法在结构上是递归的,为了解决一个问题,需要不断的调用自己。这些问题常采用分治的策略,即将每个大问题转化为若干个小问题来解决。 合并排序就是一个需要用分治法来解决问题的例子。 合并排序的关键在于合并排好序的两个子序列,例如,现在假设递归的一个子问题为:有大数组A[n],从n/2处分隔开,前一半为排好序的,一半为排好序的,但是整个数组并没有完全排好。这时候我们只要将已经排好序的两个稍小的数原创 2014-03-15 10:27:44 · 385 阅读 · 0 评论 -
递归算法时间复杂度的估计问题
在递归算法中,我们常常需要计算算法的时间复杂度。例如前一次讲到的合并排序,就是一个递归的过程。递归过程可以用下面的式子来描述: 当n=1时,算法的时间复杂度为O(1),当n>1时,算法可以拆分成多个相同的子过程。计算这样的递归算法的时间复杂度大体上有三种方法。1、代换法。代换法首先要猜测解的形式,然后要用数学归纳法来证明。2、递归树方法。将迭代的过程画成一个递归树,通过递归树来确定时间复杂度原创 2014-03-15 19:57:32 · 589 阅读 · 0 评论 -
组合数算法
【问题】 组合问题 问题描述:找出从自然数1、2、... 、n中任取r个数的所有组合。例如n=5,r=3的所有组合为: 1,2,3 1,2,4 1,3,4 2,3,4 1,2,5 1,3,5 2,3,5 1,4,5 2,4,5 3,4,5 用程序实现有几种方法: 1)穷举法 程序如下 【程序】 #include const i转载 2014-03-21 14:22:51 · 503 阅读 · 0 评论