




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生学号 实验课成绩学 生 实 验 报 告 书实验课程名称算法设计与分析开 课 学 院计算机科学与技术学院指导教师姓名李晓红学 生 姓 名学生专业班级软件工程zy1302班2015-2016学年第一学期实验课程名称: 算法设计与分析 实验项目名称分治与递归实验成绩实 验 者专业班级软件zy1302班组 别同 组 者实验日期2015年10月20日第一部分:实验分析与设计1 实验内容描述(问题域描述)1、 利用分治法,写一个快速排序的递归算法,并利用任何一种语言,在计算机上实现,同时进行时间复杂性分析;2、 要求用递归的方法实现。二.实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)本次的解法使用的是“三向切分的快速排序”,它是快速排序的一种优化版本。不仅利用了分治法和递归实现,而且对于存在大量重复元素的数组,它的效率比快速排序基本版高得多。它从左到右遍历数组一次,维护一个指针lt使得alo.lt-1中的元素都小于v,一个指针gt使得agt+1.hi中的元素都大于v,一个指针i使得alt.i-1中的元素都等于v,ai.gt中的元素都还未确定,如下图所示:public class Quick3way public static void sort(Comparable a, int lo, int hi) if (lo = hi) return; int lt = lo, i = lo + 1, gt = hi; Comparable pivot = alo; while (i 0) exch(a, i, gt-); else if (cmp = Ci) then Fik max(Fik,Fi-1k-Ci+Wi) return FNV三、主要仪器设备及耗材PC机第二部分:实验调试与结果分析一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)1、 调试方法:直接在方法入口断点调试,一步一步跟踪程序,弄明白程序的运行轨迹;2、 实验数据:int m = 10;int n = 3;int w = 3, 4, 5;int p = 4, 5, 6;3、 实验中遇到问题:(1) 刚开始对动态规划算法不熟悉,编码时出现很多的错误,花费了很多的时间;(2) 没有深度理解此处为什么要使用动态规划算法,导致对问题的理解不深刻。二、 实验结果分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)1、 实验结果:2、时间复杂度:nm;3、空间复杂度:nm(可优化至m);4、 算法总结:动态规划的基本思想:将一个问题分解为子问题递归求解,且将中间结果保存以避免重复计算。通常用来求最优解,且最优解的局部也是最优的。求解过程产生多个决策序列,下一步总是依赖上一步的结果,自底向上的求解。三、小结、建议及体会本次实验解决了0/1背包问题,掌握动态规划算法求解问题的一般特征和步骤。在实验过程中,我遇到了很多不懂的问题,但通过老师和同学们的帮助,和自己的努力,最终解决了所有问题,收获颇丰。在今后的算法设计中,我会迎难而上!源代码:实验一:import java.util.Arrays;public class Quick3way public static void sort(Comparable a) sort(a, 0, a.length - 1); public static void sort(Comparable a, int lo, int hi) if (lo = hi) return; int lt = lo, i = lo + 1, gt = hi; Comparable pivot = alo; while (true) int cmp = pareTo(pivot); if (cmp 0) exch(a, i, gt-); else if (cmp gt) break; sort(a, lo, lt - 1); sort(a, gt + 1, hi); private static void exch(Comparable a, int i, int j) Comparable temp = ai; ai = aj; aj = temp; public static void show(Comparable a) System.out.println(Arrays.toString(a); public static void main(String args) String a = R, B, W, W, R, W, B, R, R, W, B, R; System.out.println(排序前:t); show(a); sort(a); / 对数组a进行排序 System.out.println(排序后:t); show(a); 实验二:package com.shawn;public class Package01 public int pack(int m, int n, int w, int p) /civ表示前i件物品恰放入一个重量为m的背包可以获得的最大价值 int c = new intn + 1m + 1; for (int i = 0; i n + 1; i+) ci0 = 0; for (int j = 0; j m + 1; j+) c0j = 0; for (int i = 1; i n + 1; i+) for (int j = 1; j m + 1; j+) /当物品为i件重量为j时,如果第i件的重量(wi-1)小于重量j时,cij为下列两种情况之一: /(1)物品i不放入背包中,所以cij为ci-1j的值 /(2)物品i放入背包中,则背包剩余重量为j-wi-1,所以cij为ci-1j-wi-1的值加上当前物品i的价值 if (wi - 1 = j) if (ci - 1j 0; i-) /如果cim大于ci-1m,说明cim这个最优值中包含了wi-1(注意这里是i-1,因为c数组长度是n+1) if (cim ci - 1m) xi - 1 = 1; m -= wi - 1; for (int j = 0; j n; j+) System.out.println(第 + j + 号背包: + xj); return x; public static void main(String args) int m = 10; / 背包容量 int n = 3; / 物品数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园白露教案反思学习小故事
- 建筑施工特种作业-建筑焊工真题库-3
- 2025届湖北省八市高三下学期3月联考语文试题(解析版)
- 2024-2025学年浙江省嘉兴市高一上学期期末考试语文试题(解析版)
- 新疆日新恒力橡塑有限公司年处理6万吨废旧轮胎热解项目报告书报告书简写本
- 江苏勃晟包装有限公司年产2300吨日用塑料制品(焊丝盘、包装盒、洒水壶、花盆)及300吨流延膜项目环评资料环境影响
- 话剧热泉心得体会
- 环境工程实验课件下载
- 环境工程专题课件
- 脑出血患者营养治疗讲课件
- 中学学生心理健康教育个案辅导记录表
- 护理带教角色转换实践路径
- 2025年安全生产考试题库(行业安全规范)-水上安全试题汇编
- 2025年05月四川阿坝州级事业单位公开选调工作人员78人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2025-2030中国硫酸钙晶须行业市场发展现状及竞争格局与投资发展研究报告
- 2025届中考地理全真模拟卷 【山东专用】(含答案)
- 沿街商铺转让合同协议书
- 法律职业伦理历年试题及答案
- 2025小升初人教版六年级英语下学期期末综合测试模拟练习卷
- 保洁台账管理制度
- 2025年水利工程专业考试试卷及答案
评论
0/150
提交评论