武汉理工大学算法分析实验报告.doc

武汉理工大学算法分析实验报告.doc

ID:58350996

大小:178.50 KB

页数:22页

时间:2020-04-16

武汉理工大学算法分析实验报告.doc_第1页
武汉理工大学算法分析实验报告.doc_第2页
武汉理工大学算法分析实验报告.doc_第3页
武汉理工大学算法分析实验报告.doc_第4页
武汉理工大学算法分析实验报告.doc_第5页
资源描述:

《武汉理工大学算法分析实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、.学生学号实验课成绩学生实验报告书实验课程名称算法设计与分析开课学院计算机科学与技术学院指导教师姓名晓红学生姓名学生专业班级软件工程zy1302班专业资料.2015--2016学年第一学期专业资料.实验课程名称:算法设计与分析实验项目名称分治与递归实验成绩实验者专业班级软件zy1302班组别同组者实验日期2015年10月20日专业资料.第一部分:实验分析与设计一.实验容描述(问题域描述)1、利用分治法,写一个快速排序的递归算法,并利用任一种语言,在计算机上实现,同时进行时间复杂性分析;2、要求用递

2、归的法实现。二.实验基本原理与设计(包括实验案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)本次的解法使用的是“三向切分的快速排序”,它是快速排序的一种优化版本。不仅利用了分治法和递归实现,而且对于存在大量重复元素的数组,它的效率比快速排序基本版高得多。它从左到右遍历数组一次,维护一个指针lt使得a[lo..lt-1]中的元素都小于v,一个指针gt使得a[gt+1..hi]中的元素都大于v,一个指针i使得a[lt..i-1]中的元素都等于v,a[i..gt]中的元素都还未确定,如下图所

3、示:专业资料.publicclassQuick3way{publicstaticvoidsort(Comparable[]a,intlo,inthi){if(lo>=hi)return;intlt=lo,i=lo+1,gt=hi;Comparablepivot=a[lo];while(i<=gt){intcmp=a[i].compareTo(pivot);if(cmp>0)exch(a,i,gt--);elseif(cmp<0)专业资料.exch(a,i++,lt++);elsei++;}sort

4、(a,lo,lt-1);sort(a,gt+1,hi);}}三、主要仪器设备及耗材PC机专业资料.专业资料.第二部分:实验调试与结果分析一、调试过程(包括调试法描述、实验数据记录,实验现象记录,实验过程发现的问题等)1、调试法描述:对程序入口进行断点,随着程序的运行,一步一步的调试,得到运行轨迹;2、实验数据:"R","B","W","W","R","W","B","R","R","W","B","R";3、实验现象:4、实验过程中发现的问题:(1)边界问题:在设计快速排序的代码时要非常小心,因为

5、其中包含非常关键的边界问题,例如:什么时候跳出while循环,递归什么时候结束,是对指针的左半部分还是右半部分排序等等;(2)程序的调试跳转:在调试过程中要时刻记住程序是对那一部分进行排序,当完成了这部分的排序后,会跳到哪里又去对另外的那一部分进行排序,这些都是要了然于心的,这样才能准确的定位程序。二、实验结果分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)1、实验结果:专业资料.1、时间复杂度:介于N和NlogN之间;2、空间复杂度:lgN;3、算法总结:三项切分的快速排序不是

6、稳定的排序,是原地排序,它的运行效率由概率保证,同时取决于输入元素的分布情况,对于包含大量重复元素的数组,它奖排序时间从线性对数级降低到了线性级别,这非常的了不起。三、小结、建议及体会本次实验完成了三向切分的快速排序,其中不仅利用了分治法和递归,还对快速排序进行了优化,使得对于存在大量重复元素的数组,能够表现更高的效率。在实验过程中,我遇到了不少的困难,但通过自己在网上大量的浏览文献和资料,独立解决了所有问题,收获了不少。在下次的实验中,我也会继续努力的!专业资料.实验课程名称:算法设计与分析实验

7、项目名称动态规划算法实验成绩实验者专业班级软件zy1302班组别同组者实验日期2015年12月1日专业资料.第一部分:实验分析与设计一.实验容描述(问题域描述)1、掌握动态规划算法求解问题的一般特征和步骤;2、使用动态规划法编程,求解0/1背包问题;3、问题描述:给定n种物品和一个背包,物品i的重量是Wi,其价值为Vi,问如选择装入背包的物品,使得装入背包的物品的总价值最大?二.实验基本原理与设计(包括实验案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)0/1背包问题的特点是:每种物品

8、仅有一件,可以选择放或不放。用子问题定义状态:即c[i][v]表示前i件物品恰放入一个重量为m的背包可以获得的最大价值。则其状态转移程便是:c[i][m]=max{c[i-1][m],c[i-1][m-w[i]]+p[i]}这个程非常重要,基本上所有跟背包相关的问题的程都是由它衍生出来的。我来解释一下:“将前i件物品放入重量为m的背包中”这个子问题,若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题。如果不放第i件物品,那么问题就转化为“前i-1件

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。