当前位置:文档之家› 算法设计与分析实验指导1_分治与递归

算法设计与分析实验指导1_分治与递归

一、实验目的:
1. 理解递归的概念。

2. 掌握设计有效算法的分治策略。

3. 掌握C++面向对象编程方法。

二、实验指导
1. 分治法的总体思想
求解一个复杂问题可以将其分解成若干个子问题,子问题还可以进一步分解成更小的问题,直到分解所得的小问题是一些基本问题,并且其求解方法是已知的,可以直接求解为止。

分治法作为一种算法设计策略,要求分解所得的子问题是同类问题,并要求原问题的解可以通过组合子问题的解来获取。

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

2. 分治法的基本步骤
divide-and-conquer(P)
{
if ( | P | <= n0) adhoc(P); //解决小规模的问题
divide P into smaller subinstances P1,P2,...,Pk;
//分解问题
for (i=1,i<=k,i++)
yi=divide-and-conquer(Pi); //递归的解各子问题
return merge(y1,...,yk); //将各子问题的解合并为原问题的解
}
三、实验内容及要求:
在程序中创建一个学生对象数组并初始化数据,完成如下编程任务。

⑴找出成绩排名第4的学生,输出其姓名。

要求:
①编写功能较为完善的学生类,重载必要的运算符;
②使用快速排序的方法。

⑵使用分治法找出成绩最高和成绩最低的学生,输出他们的姓名。

四、实验报告要求
①实验报告只写实验⑵。

②写出算法思想、主要程序代码、算法复杂性分析。

1。

相关主题