算法设计与分析-第2章 递推方程求解

合集下载

算法设计与分析第2章

算法设计与分析第2章
• 把n看作算法的输入规模 • 算法的基本操作是乘法,其运行时间(或执行次数)为 T(n),其递归关系式(recurrence relations,或称递归方程) T(n) = T(n - 1) + O(1), n>0
计算F(n-1)所需 乘法次数 计算F(n-1) ×n所需 乘法次数
初始条件(initial condition):停止递归调用的条件 T(0) = 0
• Conquer: 一个划分确定后,A[s]的位置便确定,再 对两个子数组递归地划分 • Combine: 原地排序in-place sort,无需合并
Quicksort(A[l…r]) if l < r s = Partition(A[l…r]) Quicksort(A[l…s-1]) Quicksort(A[s+1…r]) Partition(A[l…r]) p = A[l] //选择第一个元素作为划分基准 i = l; j = r + 1 repeat repeat i = i + 1 until A[i] ≥ p //left-to-right scan repeat j = j - 1 until A[j] ≤ p //right-to-left scan swap(A[i], A[j]) until i ≥ j swap(A[i], A[j]) //undo last swap when i ≥ j swap(A[l], A[j]) return j
二分搜索(Binary Search)
• 给定已按升序排好序的n个元素A[0…n-1],现要在 这n个元素中找出一特定元素k。
– 蛮力算法:遍历、 Tworst(n) =O(n) – 分治法是否适用?
• • • •

求解递推方程

求解递推方程

求解递推方程递推方程是一种数学模型,用于描述某个数列中每个数与前面的数之间的关系。

在实际应用中,递推方程常常用于预测未来的趋势或者计算某个数列中的特定项。

本文将介绍如何求解递推方程。

我们需要了解递推方程的基本形式。

一般来说,递推方程可以写成如下形式:an = f(an-1, an-2, …, an-k)其中,an表示数列中的第n项,f是一个函数,它描述了第n项与前面的k项之间的关系。

在实际应用中,k的取值通常是2或3。

接下来,我们需要找到递推方程的初始条件。

也就是说,我们需要知道数列中的前k项。

这些初始条件通常是通过实验或者观察得到的。

有了递推方程和初始条件,我们就可以使用递推法求解数列中的任意一项。

具体来说,我们可以按照如下步骤进行:1. 根据初始条件,计算出数列中的前k项。

2. 根据递推方程,计算出数列中的第k+1项。

3. 用计算出的第k+1项替换掉数列中的第1项,得到新的数列。

4. 重复步骤2和步骤3,直到计算出所需的项数为止。

需要注意的是,递推方程的求解过程中可能会涉及到复杂的数学运算,例如求和、求积等。

在这种情况下,我们可以使用数学工具或者编程语言来辅助计算。

我们需要检验所求解的数列是否符合递推方程和初始条件。

一般来说,我们可以通过计算数列中的前几项来检验结果的正确性。

如果计算出的数列与实际数列相符,则说明递推方程求解正确。

求解递推方程是一种重要的数学技能,它在实际应用中具有广泛的应用。

通过掌握递推方程的基本形式和求解方法,我们可以更好地理解数列中的规律,预测未来的趋势,以及计算数列中的特定项。

算法设计与分析耿国华第二章

算法设计与分析耿国华第二章

Chapter
Hale Waihona Puke 22.4.1替换方法
例2.6 汉诺塔算法(见例2.5)的时间复杂 度分析。 假设汉诺塔算法的时间复杂度为T(n),例 2.5的算法递归方程为:
n 1 1 T ( n) 2T (n 1) 1 n 1
Chapter
2
2.4.1替换方法
利用替换法求解该方程:
T (n) 2T (n 1) 1
2
2.2具有递归特性的问题
• (2)递归定义的数据结构
在数据结构中,如广义表、二叉树、树等结构 其本身均具有固有的递归特性,可以自然地采 用递归法进行处理。 (3)递归求解方法 许多问题的求解过程可以用递归分解的方法描 述,例如:计算两非负整数最大公约数的欧几 里得算法和著名的汉诺塔问题(Hanoi)问题。
T (n) O(2n )
得到该算法的时间复杂度
Chapter
2
2.4.1替换方法
例2.7 2-路归并排序的递归算法分析。 假设初始序列含有n个记录,首先将这n个记 录看成n个有序的子序列,每个子序列的长度为1, 然后两两归并,得到 n / 2个长度为2(n为奇数 时,最后一个序列的长度为1)的有序子序列; 在此基础上,再对长度为2的有序子序列进行两 两归并,得到若干个长度为4的有序子序列;如 此重复,直至得到一个长度为n的有序序列为止。 这种方法被称作2-路归并排序。
F(6) F(5) F(4) F(3) F(2) F(1) F(0) F(1) F(1) F(2) F(3) F(2) F(1) F(2) F(1) F(0) F(3) F(1) F(1) F(4) F(2) F(0)
F(0) F(1) F(0)
图2-1 斐波那契算法的递归结构(n=6)

[工学]算法设计与分析第二章

[工学]算法设计与分析第二章
2018/11/20 计算机算法设计与分析 26
递归复杂性的一般形式
• 一般的,递归复杂性可描述为递归方程: 1 n=1 f(n) = af(n ~ b) + D(n) n>1 • 其中,a是子问题个数, ~表示递减方式, b是递减步长, D(n)是合成子问题的开销。 • 通常,递归元的递减方式~有两种: 分治法 1、除法,即n / b,的形式; 递推法 2、减法,即n – b,的形式。
第二章
递归与分治
2018/11/20
计算机算法设计与分析
1
递归的思想
• 递归(Recursion)就是通过把复杂问题分解为 较简单的同一问题来求解。 • 递归求解问题的方法通常有两步: • 第一步是考虑最简单的情况下该问题如何 求解。 • 第二步是考虑该问题的较复杂情况是如何 由较简单的所构成的。 • 由此得出该问题求解的方法。
2018/11/20 计算机算法设计与分析 28
分治法的基本思想
• 将一个规模为n的问题分解为a个规模较小的 子问题,这些子问题互相独立并且与原问题 相同。 • 递归地求解这些子问题问题。 • 然后将各个子问题的解合并在一起,从而得 到原问题的解。 • 影响其时间复杂性的因素是子问题的个数和 合并开销函数,其中较大者起主要作用。
A B C
2018/11/20
计算机算法设计与分析
4
Hanoi塔问题
• 让我们先考虑最简单的情况: • 1、若没有盘子(n=0),自然不需要做任何事情。 • 2、若只有一个盘子,也很容易。直接把它移到B 盘即可。
• 不妨设操作Move(X, Y) 将X柱上的一个盘子(最 顶上的)移到Y柱上。
A B C
GCD(x, y) = y, x, GCD(x – y, y), GCD(x, y – x), x=0 y = 0 最简单 x y 的情况 x < y 有两种

求解递推方程

求解递推方程

求解递推方程【前言】递推方程,在数学中也称为递归式,是一种递归定义的数学式子。

它通常用于描述一些指数级别的计算过程,如斐波那契数列等,是算法分析中一个非常基础的概念。

本文将介绍递推方程的基本概念和求解方法,并给出几个例子进行解析。

另外,本文的内容长度约为700字,将按照以下列表划分:1.递推方程的定义2.递推方程的求解方法3.斐波那契数列的递推方程4.经典递推问题——青蛙跳台阶问题的递推方程5.总结【正文】1.递推方程的定义递推方程是描述一个数列中每个项与前面某些项之间关系的方程式。

通常用f(n)表示序列的第n个数,而序列中的每个数,都可以通过前面某几个数的加减乘除运算来得到。

递推方程可以用以下的方式表示:f(n)=a*f(n-1) + b*f(n-2) + g(n)其中a,b为常数,g(n)是一个能够用n的式子表示的函数。

2.递推方程的求解方法对于递推式的求解,通常需要用到数学归纳法。

具体来说,可以采用以下的步骤:(1)通过观察数列的前几个数,找出递推式的初值。

(2)首先验证初值是否符合递推式,即检验f(1),f(2)等初几项是否为预期的值。

(3)假定递推式对1到n-1的所有自然数都成立,需要证明递推式对n也成立,即验证f(n)是否能够通过前面的项f(1)~f(n-1)计算得到。

(4)最后,通过归纳法证明递推式对任意自然数n都成立。

3.斐波那契数列的递推方程斐波那契数列是一个非常经典的递推问题,定义如下:f(1)=1,f(2)=1f(n)=f(n-1)+f(n-2),n≥3其中,f(n)表示斐波那契数列的第n项。

这个数列的前几项依次为1,1,2,3,5,8,13,21......以下是斐波那契数列的递推方程的证明过程:(1)首先根据题意,可以确定斐波那契数列的初值f(1)=1,f(2)=1。

(2)验证初值是否符合递推式,可以计算出f(3)=2,f(4)=3等,并确认这些值与数列的定义是一致的。

算法设计与分析(第2版)

算法设计与分析(第2版)
该教材在编写过程中参考了很多同行的教材和络博客,特别是“牛客”中企业面试、笔试题和资源,河南工 程学院张天伍老师和使用该教材第1版的多位老师指正多处问题和错误。
出版工作
2018年8月1日,该教材由清华大学出版社出版。
内容简介
内容简介
全书由12章构成,各章的内容如下。
第1章概论:介绍算法的概念、算法分析方法和STL在算法设计中的应用。
教材目录
教材目录
(注:目录排版顺序为从左列至右列 )
教学资源
教学资源
该教材配有配套教材——《算法设计与分析(第2版)学习与实验指导》,该配套教材涵盖所有练习题、上 机实验题和在线编程题的参考答案。
该教材每个知识点都配套了视频讲解,提供PPT课件、源码、答案、教学大纲、题库、书中全部源程序代码 (在VC++6.0中调试通过)等教学资源。
算法设计与分析(第2版)
20xx年清华大学出版社出版的图书
01 成书过程
03 教材目录源 06 作者简介
基本信息
《算法设计与分析(第2版)》是由李春葆主编,2018年清华大学出版社出版的高等学校数据结构课程系列 教材。该教材适合作为高等院校“算法设计与分析”课程的教材,也可供ACM和各类程序设计竞赛者参考。
第5章回溯法:介绍解空间概念和回溯法算法框架,讨论采用回溯法求解0/1背包问题、装载问题、子集和问 题、n皇后问题、图的m着色问题、任务分配问题、活动安排问题和流水作业调度问题的典型算法。
第6章分枝限界法:介绍分枝限界法的特点和算法框架、队列式分枝限界法和优先队列式分枝限界法,讨论 采用分枝限界法求解0/1背包问题、图的单源最短路径、任务分配问题和流水作业调度问题的典型算法。
该教材介绍了各种常用的算法设计策略,包括递归、分治法、蛮力法、回溯法、分枝限界法、贪心法、动态 规划、概率算法和近似算法等,并讨论了各种图算法和计算几何设计算法。书中配有图表、练习题、上机实验题 和在线编程题。

算法之2章递归与分治

算法之2章递归与分治

算法分析(第二章):递归与分治法一、递归的概念知识再现:等比数列求和公式:1、定义:直接或间接地调用自身的算法称为递归算法。

用函数自身给出定义的函数称为递归函数。

2、与分治法的关系:由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。

在这种情况下,反复应用分治手段,可以使子问题与原问题类型一致而其规模却不断缩小,最终使子问题缩小到很容易直接求出其解。

这自然导致递归过程的产生。

分治与递归经常同时应用在算法设计之中,并由此产生许多高效算法。

3、递推方程:(1)定义:设序列01,....na a a简记为{na},把n a与某些个()ia i n<联系起来的等式叫做关于该序列的递推方程。

(2)求解:给定关于序列{n a}的递推方程和若干初值,计算n a。

4、应用:阶乘函数、Fibonacci数列、Hanoi塔问题、插入排序5、优缺点:优点:结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便。

缺点:递归算法的运行效率较低,无论是耗费的计算时间还是占用的存储空间都比非递归算法要多。

二、递归算法改进:1、迭代法:(1)不断用递推方程的右部替代左部(2)每一次替换,随着n的降低在和式中多出一项(3)直到出现初值以后停止迭代(4)将初值代入并对和式求和(5)可用数学归纳法验证解的正确性2、举例:-----------Hanoi塔算法----------- ---------------插入排序算法----------- ()2(1)1(1)1T n T nT=−+=()(1)1W n W n nW=−+−(1)=021n-23()2(1)12[2(2)1]12(2)21...2++2 (121)n n n T n T n T n T n T −−=−+=−++=−++==++=−(1)2 ()(1)1((n-2)+11)1(2)(2)(1)...(1)12...(2)(1)(1)/2W n W n n W n n W n n n W n n n n =−+−=−−+−=−+−+−==++++−+−=−3、换元迭代:(1)将对n 的递推式换成对其他变元k 的递推式 (2)对k 进行迭代(3)将解(关于k 的函数)转换成关于n 的函数4、举例:---------------二分归并排序---------------()2(/2)1W n W n n W =+−(1)=0(1)换元:假设2kn =,递推方程如下()2(/2)1W n W n n W =+−(1)=0 → 1(2)2(2)21k k k W W W−=+−(0)=0(2)迭代求解:12122222321332133212()2(2)212(2(2)21)212(2)22212(2)2*2212(2(2)21)2212(2)222212(2)3*2221...2(0)*2(22...21)22k k k k k k k k k k k k k k k k k k k k k k k k W n W W W W W W W W k k −−−−−−−+−+−−−=+−=+−+−=+−+−=+−−=+−+−−=+−+−−=+−−−==+−++++=−1log 1n n n +=−+(3)解的正确性—归纳验证: 证明递推方程的解是()(1)/2W n n n =−()(1)1W n W n n W =−+−(1)=0,(n 1)=n +n=n(n-1)/2+n =n[(n-1)/2+1]=n(n+1)/2n W W +方法:数学归纳法证 n=1,W(1)=1*(1-1)/2=0假设对于解满足方程,则()---------------快速排序--------------------->>>平均工作量:假设首元素排好序在每个位置是等概率的112()()()(1)0n i T n T i O n n T −==+=∑ >>>对于高阶方程应该先化简,然后迭代(1)差消化简:利用两个方程相减,将右边的项尽可能消去,以达到降阶的目的。

计算机算法设计与分析(第4版) 王晓东习题解答

计算机算法设计与分析(第4版) 王晓东习题解答

第一章作业1.证明下列Ο、Ω和Θ的性质1)f=Ο(g)当且仅当g=Ω(f)证明:充分性。

若f=Ο(g),则必然存在常数c1>0和n0,使得∀n≥n0,有f≤c1*g(n)。

由于c1≠0,故g(n) ≥ 1/ c1 *f(n),故g=Ω(f)。

必要性。

同理,若g=Ω(f),则必然存在c2>0和n0,使得∀n≥n0,有g(n) ≥ c2 *f(n).由于c2≠0,故f(n) ≤ 1/ c2*f(n),故f=Ο(g)。

2)若f=Θ(g)则g=Θ(f)证明:若f=Θ(g),则必然存在常数c1>0,c2>0和n0,使得∀n≥n0,有c1*g(n) ≤f(n) ≤ c2*g(n)。

由于c1≠0,c2≠0,f(n) ≥c1*g(n)可得g(n) ≤ 1/c1*f(n),同时,f(n) ≤c2*g(n),有g(n) ≥ 1/c2*f(n),即1/c2*f(n) ≤g(n) ≤ 1/c1*f(n),故g=Θ(f)。

3)Ο(f+g)= Ο(max(f,g)),对于Ω和Θ同样成立。

证明:设F(n)= Ο(f+g),则存在c1>0,和n1,使得∀n≥n1,有F(n) ≤ c1 (f(n)+g(n))= c1 f(n) + c1g(n)≤ c1*max{f,g}+ c1*max{f,g}=2 c1*max{f,g}所以,F(n)=Ο(max(f,g)),即Ο(f+g)= Ο(max(f,g))对于Ω和Θ同理证明可以成立。

4)log(n!)= Θ(nlogn)证明:∙由于log(n!)=∑=n i i 1log ≤∑=ni n 1log =nlogn ,所以可得log(n!)= Ο(nlogn)。

∙由于对所有的偶数n 有,log(n!)= ∑=n i i 1log ≥∑=n n i i 2/log ≥∑=nn i n 2/2/log ≥(n/2)log(n/2)=(nlogn)/2-n/2。

当n ≥4,(nlogn)/2-n/2≥(nlogn)/4,故可得∀n ≥4,log(n!) ≥(nlogn)/4,即log(n!)= Ω(nlogn)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
汉诺塔递归算法复杂度分析
输入规模:盘子的数量n 基本操作:移动盘子 执行次数:M(n)
递推式: 当n>1时,M(n)=M(n-1)+1+M(n-1) n=1时,M(n)=1
解递推方程,得解为M(n)=2n-1
2.1 递归的概念
例2 Fibonacci数列 无穷数列1,1,2,3,5,8,13,21,34,55,…,
第2章 递归与分治策略
算法总体思想
• 将题对仍要。这然求k不解个够的子小较问,大题规则分模再别的划问求分题解为分。k割如个成果子k个子问更问题小题,规的如模的规此子模递问 归的进行下去,直到问题规模足够小,很容易 求出其解为止。
=n T(n)
T(n/2)
T(n/2)
T(n/2)
T(n/2)
算法总体思想
if(n==0)
return 1;
else
用于计算
return F(n-1)*n; F(n-1)
基本操作:乘法
执行次数:M(n)
分析:当n>0时,M(n)=M(n-1)+1
当n=0时,M(0)=0 (初始条件)
求解递推方程,M(n)=n
将F(n-1) 乘以n
汉诺塔问题
设a,b,c是3个塔座。开始时,在塔座a上有一叠共n个圆 盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘 从小到大编号为1,2,…,n,现要求将塔座a上的这一叠圆 盘移到塔座b上,并仍按同样顺序叠置。在移动圆盘时 应遵守以下移动规则:
算法mergeSort的递归过程可以消去。 初始序列 [49] [38] [65] [97] [76] [13] [27]
第一步 第二步
[38 49] [65 97] [13 76] [27]
[38 49 65 97]
[13 27 76]
第三步
[13 27 38 49 65 76 97]
合并排序
最坏时间复杂度:O(nlogn) 平均时间复杂度:O(nlogn) 辅助空间:O(n) 稳定性:稳定
别对2个子集合进行排序,最终将排好序的子集合合并成为所
要求的排复好杂序度的分集析合。

O(1)
n 1
public {
static
void
Tm(en)rgeS2Tor(nt(/C2o)m Opa(nra) bnlea1[],
int
left,
int
right)
if (left<righTt()n{)/=/至O(少nl有og2n个) 渐元进素意义下的最优算法
被称为Fibonacci数列。它可以递归地定义为:

1
n0
F
(n)


1
n 1
F (n 1) F (n 2) n 1
第n个Fibonacci数可递归地计算如下: public static int fibonacci(int n)
{ if (n <= 1) return 1; return fibonacci(n-1)+fibonacci(n-2);
例5 整数划分问题 将正整数n表示成一系列正整数之和:n=n1+n2+…+nk, 其中n1≥n2≥…≥nk≥1,k≥1。 正整数n的这种表示称为正整数n的划分。求正整数n的不 同划分个数。
例如正整数6有如下11种不同的划分: 6; 5+1; 4+2,4+1+1; 3+3,3+2+1,3+1+1+1; 2+2+2,2+2+1+1,2+1+1+1+1; 1+1+1+1+1+1。
规则1:每次只能移动1个圆盘; 规则2:任何时刻都不允许将较大的圆盘压在较小的圆盘
之上; 规则3:在满足移动规则1和2的前提下,可将圆盘移至
a,b,c中任一塔座上。
2.1 递归的概念
例2 Hanoi塔问题 在当pu问nb=l题ic1时规sta,模ti问c较v题大oi比时d h较,a简较no单难i(i。找nt此到n,时一in,般t a只的, i要n方t 将法b,编,in号t因c为此) 1我的们圆尝盘试从塔座a 用直递接{ 归移技至术塔来座解b上决即这可个。问题。 当较大n小圆>的盘i{f1圆从(时n盘塔,> 依座0需)照a要移移利至动用塔规塔座则座b从,c作塔最为座后辅a,移助再至塔设塔座法座。将c此,n时-然1若个后能较,设小将法的剩将圆下n盘的-1依最个 照移动规ha则no从i(塔n-1座, ac移, c至, b塔); 座b。 由此可见mo,vne(个a,圆b)盘; 的移动问题可分为2次n-1个圆盘的移动问题, 这又可以ha递no归i(地n-1用, c上, 述b, 方a)法; 来做。由此可以设计出解Hanoi塔问 题的递} 归算法如下。
缺点:递归算法的运行效率较低,无论是耗费 的计算时间还是占用的存储空间都比非递归 算法要多。
递归小结
解决方法:在递归算法中消除递归调用,使其转 化为非递归算法。
1.采用一个用户定义的栈来模拟系统的递归调用 工作栈。该方法通用性强,但本质上还是递归, 只不过人工做了本来由编译器做的事情,优化 效果不明显。
算法总体思想
• 将求出的小规模的问题的解合并为一个更大规 模的问题的解,自底向上逐步求出原来问题的 解。
T(n)
=n
n/2
n/2
n/2
n/2
T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4
• 对将这求k出个的子问小题规分模别的求问解题。如的果解子合问并题为的一规模个仍更然大不规够 小模,的则问再题划的分解为,k个自子底问向题,上如逐此步递求归出的原进行来下问去题,的直 到解问。题规模足够小,很容易求出其解为止。
T(n)
=n
n/2
n/2
n/2
n/2
T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4
人们从大量实践中发现,在用分治法设计算法时,最好使子 问题的规模大致相同。即将一个问题分成大小相等的k个子问题 的处理方法是行之有效的。这种使子问题规模大致相等的做法 是出自一种平衡(balancing)子问题的思想,它几乎总是比子问 题规模不等的做法要好。
合并排序
基本思想:将待排序元素分成大小大致相同的2个子集合,分
int i=(left+right)/2; //取中点
mergeSort(a, left, i);
mergeSort(a, i+1, right);
merge(a, b, left, i, right); //合并到数组b
copy(a, b, left, right); //复制回数组a
}
}
合并排序
问题具有最优子结构性质 利用该问题分解出的子问题的解可以合并为该问题的
解; 该问题所分解出的各个子问题是相互独立的,即子问
题之间不包含公共的子问题。
因这能为条否问特利题征用的是分涉计应治及算用法到复分完杂治全性法取一的决般前于效是提问率随,题着它是如问也否果题是具各规大有子模多这问的数条题增问特是加题征不, 而可如独增以果立加满具的,足备因的了则此,前分大此两治部特条法分征特要问反征做题映,许满了而多足递不这归具必个思备要特想第的征的三工。应条作用特,征重,复则地 可解以公考共虑的子贪问心题算,法此或时动虽态然规也划可。用分治法,但一般 用动态规划较好。
算法总体思想
• 将求出的小规模的问题的解合并为一个更大规 模的问题的解,自底向上逐步求出原来问题的 解。
分分治割T法成(n的一) 设 些计 规思 模想 较是小=,的将相一同n个问难题以,直以接便解 各决 个的 击大 破问 ,题,
分而治之。
凡治众如治寡,分数是也。
n/2
n/2
n/2 ----孙子兵n/2法

1
q(n,
m)

Байду номын сангаас

q(n, n) 1 q(n, n 1)
q(n, m 1) q(n m, m)
n 1, m 1 nm nm
n m 1
正整数n的划分数p(n)=q(n,n)。
递归小结
优点:结构清晰,可读性强,而且容易用数学 归纳法来证明算法的正确性,因此它为设计 算法、调试程序带来很大方便。
((13)) qq((nn,,1n))==11,+nq1(n; ,n-1); 当即正最整n 大数1n加1的数n划n1分1不由大n于1=1n时的,划任分何和正n1整≤数n-n1只的有划一分种组划成分。形式,
(24) q(n,m)=q(n,nm)-,m1)+nq; (n-m,m),n>m>1; 最正大整加数数n的n1最实大际加上数不n能1不大大于于n。m的因划此分,由q(n11,m=m)=的1。划分和 n1≤n-1 的划分组成。
T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4
2.1 递归的概念
直接或间接地调用自身的算法称为递归算法。 用函数自身给出定义的函数称为递归函数。
private static void qSort(int p, int r)
思考题:给定有序表A[1:n],修 改合并排序算法,求出该有序表 的逆序对数。
相关文档
最新文档