算法设计与分析

来源:互联网 发布:ipad 笔记软件 知乎 编辑:程序博客网 时间:2024/05/16 01:56

实验部分

一、要求

    1.实验要求独立完成,发现抄袭则实验为0分(包括网上的代码),没有分组, 实验时间为第9周到第16周。

    2.要求提交实验源码,可执行程序以及实验报告。实验报告包括程序的输入,输出,结果,演示界面,算法语言描述,原理等。提交文件要求使用rar打包,并且命名文件格式为学号+姓名(eg. 学号_NAME,不符合命名格式的一律不批改。

3.程序语言不做特别要求,C、C++、JAVA均可。

二、题目

1.(必做题) 常见排序算法的实现与性能比较

       问题描述:实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法

       实验要求:

         A. 在随机产生的空间大小分别为
                N = 10, 1000,10000,100000 

的排序样本(取值为[0,1])上测试以上算法。

B.结果输出:

 1) N=10时,排序结果。 
            2) N=100010000100000时,对同一个样本实例,不同排序完  

成所需的时间。 
            3) N=100010000100000时,每个排序用不同的样本多试验几

次(最低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))
      

文档要点:描述动态规划思想,总结时间和空间复杂度。

原创粉丝点击