中科大算法导论实验,包括代码报告和可执行文件,vc++6.0下编程,c语言代码。 实验部分 一、要求 1.算法设计与分析1班,10月21日(周日)开始上课,晚上19:00-22:00。连续八周每周日在明德楼103实验室上实验课。 2.实验要求独立完成,发现抄袭则实验为0分(包括网上的代码),没有分组。 3.要求提交实验源码,可执行程序以及实验报告。实验报告包括程序的输入,输出,结果,演示界面,算法语言描述,原理等。要求把所有实验打包成一个rar文件后提交到教学系统,并且命名文件格式为学号+姓名(eg. 学号_NAME),不符合命名格式的一律不批改。 4.程序语言不做特别要求,C、C++、JAVA均可 5.实验提交截止时间: 2012/12/16 23:59:00 之前 二、题目 1.(必做题) 常见排序算法的实现与性能比较 问题描述:实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法 实验要求: A. 在随机产生的空间大小分别为 N = 10, 1000,10000,100000 的排序样本(取值为[0,1])上测试以上算法。 B.结果输出: 1) N=10时,排序结果。 2) N=1000,10000,100000时,对同一个样本实例,不同排序完 成所需的时间。 3) N=1000,10000,100000时,每个排序用不同的样本多试验几 次(最低5次)得出平均时间,比较不同排序算法所用的平均时间。 文档要点:总结对各种排序的性能分析。 2. (必做题) 红黑树、二叉搜索树的实现和性能比较 问题描述: 实现红黑树、二叉搜索树相关算法:插入(红黑树涉及树的调整:左旋、右旋等),删除,搜索(指定Key值节点)。 另外,红黑树实现计算树黑高的算法。 实验要求: 1).插入测试,输入 8,11,17,15,6,1,22,25,27,建立红黑树,按照 红黑树信息输出方式 输出整棵红黑树以及黑高。 2).删除测试,删除1)中红黑树中Key=15的节点,按照 红黑树信息输出方式 输出调整后的整棵红黑树以及黑高。 3).随机产生300,000个不同自然数Key值(1-300,000,每个数出现一次,出现顺序随机),建立红黑树,查找Key=15000的节点,输出查找花费时间。 用上面的数据,建立二叉搜索树,查找Key=15000的节点,输出查找花费时间。 4). 重复3-5次3)中操作,求各自平均时间。 5). 在1)-4)的红黑树算法基础上修改完成P307 14.1-4算法 OS_Key_Rank(T,k). 输入 1,2,3,4,5,6,7,8 建树, k=6, 输出OS_Key_Rank的返回值。 文档要点:总结红黑树和二叉搜索树在查找上的性能分析,描述此类算法的应用。 附: 红黑树信息输出方式(右图) 3. (选做题) 最长递增子序列 问题描述: 随机生成小于等于n的自然数的一个序列,输出其最长递增子序列(任意一个即可)。 n 分别取 1000,3000,10000。 例: n=5 随机序列为 5 1 4 2 3,正确输出为1 2 3,即长度为3的递增子序列。 提示:参考LCS,思考能否达到时间复杂度(O(nlogn)) 文档要点:描述动态规划思想,总结时间和空间复杂度。
1