11 2013 档案
摘要:算法设计与分析试题(中国科学院大学-陈玉福-2011秋) 一. 回答下列问题: (每小题5分) 1.陈述算法在最坏情况下的时间复杂度和平均时间复杂度;这两种评估算法复杂性的方法各自有什么实际意义?最坏情况下的时间复杂度称最坏时间复杂度。一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。这样做的原因是:最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界,这就保证了算法的运行时间不会比任何更长。平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,算法的期望运行时间。2.阐述动态规划算法与贪心算法的区别,它们都有那些优势和劣势?动态规划算法与贪心算法都要求问题具有最优子结构
阅读全文
摘要:复杂性分析初步:计算复杂性体现在算法占用机器空间资源和时间资源的情况,是关于选定模型下输入数据规模的函数。起决定作用的是这些函数当输入数据规模趋于无穷大时的渐进性态。主要内容:1、空间复杂性2、时间复杂性3、渐进函数4、1、2阶递归函数求解5、the master method一、空间复杂性:(内存需求)指令空间:存储编译后的程序指令 数据空间:存储所以常量和变量的值 环境栈空间:保存函数调用返回时恢复运行所需要的信息 例子: 二、时间复杂性:(程序运行时间)程序所占时间Tp =编辑时间+运行时间(编译时间与实例特征无关,主要关注运行时间) 估算运行时间的方法: 关键操作计数 总的执行步统计
阅读全文
摘要:(PS:内容参考MIT算法导论)插入排序(Insertion Sort):适用于数目较少的元素排序伪代码(Pseudocode):例子(Example):符号(notation):时间复杂度(Running Time):源代码(Source Code):#includeusing namespace std; template void InsertSort(T a[], int n){ for(int j=1;j=0 && a[i]>t){ a[i+1]=a[i]; i=i-1; } a[i+1]=t; } } void main(){ int a[]={8,2,4,9
阅读全文