算法分析习题参考答案第一章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题一复杂性分析初步
1. 试确定下述程序的执行步数,该函数实现一个m×n矩阵与一个n×p矩阵之间的乘法:
矩阵乘法运算
template
void Mult(T **a, T **b, int m, int n, int p)
{//m×n矩阵a与n×p矩阵b相成得到m×p矩阵c
for(int i=0; i for(int j=0; j T sum=0; for(int k=0; k Sum+=a[i][k]*b[k][j]; C[i][j]=sum; } } 其中s/e 表示每次执行该语句所要执行的程序步数。 频率是指该语句总的执行次数。 2.函数MinMax用来查找数组a[0:n-1]中的最大元素和最小元素,以下给出两个程序。令n为实例特征。试问:在各个程序中,a中元素之间的比较次数在最坏情况下各是多少? 找最大最小元素 方法一 template bool MinMax(T a[], int n, int& Min, int& Max) {//寻找a[0:n-1]中的最小元素与最大元素 //如果数组中的元素数目小于1,则还回false if(n<1) return false; Min=Max=0; //初始化 for(int i=1; i if(a[Min]>a[i]) Min=i;