20XX武汉理工大学算法分析实验报告.docx

上传人:b****1 文档编号:1680820 上传时间:2022-10-23 格式:DOCX 页数:16 大小:101.57KB
下载 相关 举报
20XX武汉理工大学算法分析实验报告.docx_第1页
第1页 / 共16页
20XX武汉理工大学算法分析实验报告.docx_第2页
第2页 / 共16页
20XX武汉理工大学算法分析实验报告.docx_第3页
第3页 / 共16页
20XX武汉理工大学算法分析实验报告.docx_第4页
第4页 / 共16页
20XX武汉理工大学算法分析实验报告.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

20XX武汉理工大学算法分析实验报告.docx

《20XX武汉理工大学算法分析实验报告.docx》由会员分享,可在线阅读,更多相关《20XX武汉理工大学算法分析实验报告.docx(16页珍藏版)》请在冰豆网上搜索。

20XX武汉理工大学算法分析实验报告.docx

20XX武汉理工大学算法分析实验报告

.

实验课成绩学生学号

书告实生验报学

实验课程名称算法设计与分析

院课学开计算机科学与技术学院

指导教师姓名李晓红

学生姓名

学生专业班级软件工程zy1302班

专业资料.

.

2015--2016学年第一学期

专业资料.

.

实验课程名称:

算法设计与分析

实验项目名称

分治与递归

实验成绩

者实验

专业班级

软件zy1302班

组别

者组同

实验日期

月年201510日20

专业资料.

.

第一部分:

实验分析与设计一.实验内容描述(问题域描述)

利用分治法,写一个快速排序的递归算法,并利用任何一种语言,在计算机上实现,同时、1进行时间复杂性分析;要求用递归的方法实现。

2、

实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者.二算法描述)

,它是快速排序的一种优化版本。

不仅利用本次的解法使用的是“三向切分的快速排序”而且对于存在大量重复元素的数组,它的效率比快速排序基本版高得多。

了分治法和递归实现,,一个指针v使得a[lo..lt-1]中的元素都小于lt它从左到右遍历数组一次,维护一个指针中,a[i..gt]va[lt..i-1]iva[gt+1..hi]gt使得中的元素都大于,一个指针使得中的元素都等于的元素都还未确定,如下图所示:

专业资料.

.

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++);

else

i++;

}

sort(a,lo,lt-1);

sort(a,gt+1,hi);

}

}

三、主要仪器设备及耗材

机PC

专业资料.

.

专业资料.

.

第二部分:

实验调试与结果分析

一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)

调试方法描述:

1、对程序入口进行断点,随着程序的运行,一步一步的调试,得到运行轨迹;实验数据:

2、剜?

尠层?

坜?

尠屗?

剜?

尠屗?

?

?

尠屒?

剜?

尠屗?

?

?

尠屒;实验现象:

3、

实验过程中发现的问题:

4、边界问题:

(1)

在设计快速排序的代码时要非常小心,因为其中包含非常关键的边界问题,例如:

循环,递归什么时候结束,是对指针的左半部分还是右半部分while什么时候跳出排序等等;)程序的调试跳转:

(2在调试过程中要时刻记住程序是对那一部分进行排序,当完成了这部分的排序后,会跳到哪里又去对另外的那一部分进行排序,这些都是要了然于心的,这样才能准确的定位程序。

二、实验结果分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)

1、实验结果:

专业资料.

.

时间复杂度:

2、之间;N介于和NlogN空间复杂度:

3、

lgN;、算法总结:

4三项切分的快速排序不是稳定的排序,是原地排序,它的运行效率由概率保证,同时取决于输入元素的分布情况,对于包含大量重复元素的数组,它奖排序时间从线性对数级降低到了线性级别,这非常的了不起。

三、小结、建议及体会

本次实验完成了三向切分的快速排序,其中不仅利用了分治法和递归,还对快速排序进行了优化,使得对于存在大量重复元素的数组,能够表现更高的效率。

在实验过程中,我遇到了不少的困难,但通过自己在网上大量的浏览文献和资料,独立解决了所有问题,收获了不少。

在下次的实验中,我也会继续努力的!

专业资料.

.

实验课程名称:

算法设计与分析

实验项目名称

动态规划算法

实验成绩

者实验

专业班级

软件zy1302班

组别

者组同

实验日期

月年201512日1

专业资料.

.

第一部分:

实验分析与设计二.实验内容描述(问题域描述)

掌握动态规划算法求解问题的一般特征和步骤;1、

背包问题;使用动态规划法编程,求解0/12、,问如何选择装入VW,其价值为问题描述:

给定n种物品和一个背包,物品i的重量是、3ii背包的物品,使得装入背包的物品的总价值最大?

实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者二.算法描述)

0/1背包问题的特点是:

每种物品仅有一件,可以选择放或不放。

的背包可以获得的最大件物品恰放入一个重量为mc[i][v]表示前i用子问题定义状态:

即价值。

则其状态转移方程便是:

c[i][m]=max{c[i-1][m],c[i-1][m-w[i]]+p[i]}

这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的。

我来解释(放或件物品的策略若只考虑第ii“将前件物品放入重量为m的背包中”这个子问题,一下:

件物品,那么问题就件物品的问题。

如果不放第i不放),那么就可以转化为一个只牵扯前i-1件物品,那么问ic[i-1][m];如果放第,价值为i-1转化为“前件物品放入容量为v的背包中”,此时能获得的最大价值就是的背包中”m-w[i]题就转化为“前i-1件物品放入剩下的重量为。

件物品获得的价值再加上通过放入第c[i-1][m-w[i]]ip[i]

专业资料.

.

算法设计如下:

{0}←F[0][]

{0}F[][0]←

1toN←fori

1toV←dofork

F[i-1][k]←F[i][k]

if(k>=C[i])

max(F[i][k],F[i-1][k-C[i]]+W[i])thenF[i][k]←

returnF[N][V]

三、主要仪器设备及耗材

机PC

专业资料.

.

第二部分:

实验调试与结果分析

一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)

调试方法:

1、

直接在方法入口断点调试,一步一步跟踪程序,弄明白程序的运行轨迹;实验数据:

、2intm=10;

intn=3;

int[]w={3,4,5};

int[]p={4,5,6};

实验中遇到问题:

、3刚开始对动态规划算法不熟悉,编码时出现很多的错误,花费了很多的时间;

(1)没有深度理解此处为什么要使用动态规划算法,导致对问题的理解不深刻。

(2)

实验结果分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)二、

实验结果:

1、

、时间复杂度:

2nm;3、空间复杂度:

);mnm(可优化至算法总结:

4、

动态规划的基本思想:

将一个问题分解为子问题递归求解,且将中间结果保存以避免重复计算。

通常用来求最优解,且最优解的局部也是最优的。

求解过程产生多个决策序列,下一步总是依赖上一步的结果,自底向上的求解。

三、小结、建议及体会专业资料.

.

背包问题,掌握动态规划算法求解问题的一般特征和步骤。

在实验过本次实验解决了0/1程中,我遇到了很多不懂的问题,但通过老师和同学们的帮助,和自己的努力,最终解决了所有问题,收获颇丰。

在今后的算法设计中,我会迎难而上!

专业资料.

.

源代码:

实验一:

importjava.util.Arrays;

publicclassQuick3way

{

publicstaticvoidsort(Comparable[]a)

{

sort(a,0,a.length-1);

}

publicstaticvoidsort(Comparable[]a,intlo,inthi)

{

if(lo>=hi)

return;

intlt=lo,i=lo+1,gt=hi;

Comparablepivot=a[lo];

专业资料.

.

while(true)

{

intcmp=a[i].compareTo(pivot);

if(cmp>0)

exch(a,i,gt--);

elseif(cmp<0)

exch(a,i++,lt++);

else

i++;

if(i>gt)

break;

}

sort(a,lo,lt-1);

sort(a,gt+1,hi);

}

privatestaticvoidexch(Comparable[]a,inti,intj)

{

Comparabletemp=a[i];

a[i]=a[j];

专业资料.

.

a[j]=temp;

}

publicstaticvoidshow(Comparable[]a)

{

System.out.println(Arrays.toString(a));

}

publicstaticvoidmain(String[]args)

{

String[]a={R,B,W,W,R,W,B,R,R,W,B,R};

祓瑳浥漮瑵瀮楲瑮湬尨排序前:

\t);

show(a);

sort(a);//对数组a进行排序

祓瑳浥漮瑵瀮楲瑮湬尨排序后:

\t);

show(a);

}

}

专业资料.

.

实验二:

专业资料.

.

packagecom.shawn;

publicclassPackage01

{

publicint[][]pack(intm,intn,intw[],intp[]

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1