1 / 13
文档名称:

中南大学算法实验报告.docx

格式:docx   大小:203KB   页数:13页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

中南大学算法实验报告.docx

上传人:2112770869 2017/5/22 文件大小:203 KB

下载得到文件列表

中南大学算法实验报告.docx

相关文档

文档介绍

文档介绍:算法分析与设计实验报告学院: 信息科学与工程学院专业班级: i got7 指导老师: 学号: i got7 姓名: 鸟宝宝 a. 合并排序合并排序是分治法的应用,把需要排序的数组 A[1 - n] ,一分为二 A[1 -n/2] 和 A[n/2+1 - n] ,然后在对每一个子数组递归排序, 接着再把这两个子数组合并成一个有序的数组。算法描述: 第一步: 申请空间, 使其大小为两个已经排序序列之和, 该空间用来存放合并后的序列第二步: 设定两个指针, 最初位置分别为两个已经排序序列的起始位置第三步: 比较两个指针所指向的元素, 选择相对小的元素放入到合并空间,并移动指针到下一位置重复步骤 3 直到某一指针超出序列尾, 将另一序列剩下的所有元素直接复制到合并序列尾关键代码: private static void Sort( int [] a, int left , int right ){ if ( left >= right ) return ; int mid =( left + right )/ 2; Sort (a, left , mid ); Sort (a, mid + 1, right ); merge (a, left , mid , right ); } private static void merge( int [] a, int left , int mid , int right ){ int [] tmp = new int [a. length ]; int r1 = mid + 1; int tIndex = left ; int cIndex = left ; // 逐个归并 while ( left <= mid && r1 <= right ){ if (a[ left ] <= a[ r1 ]) tmp [ tIndex ++] =a[ left ++]; else tmp [ tIndex ++] =a[ r1 ++]; } // 将左边剩余的归并 while ( left <= mid ){ tmp [ tIndex ++] =a[ left ++]; } // 将右边剩余的归并 while ( r1 <= right ){ tmp [ tIndex ++] =a[ r1 ++]; } System. out .print( "第" +(++ number )+ " 次排序:" ); // 从临时数组拷贝到原数组 while ( cIndex <= right ){ a[ cIndex ]= tmp [ cIndex ]; // 输出中间归并排序结果 System. out .print( a[ cIndex ]+ "" ); cIndex ++; } System. out .println(); } 运行结果截屏: 算法分析:合并排序满足分治法的基本公式 T(n)=2T(n/2)+f(n) 其中 2T(n/2) 是2 个子问题求解,即对两个子数组排序; 而 f(n) 是将子问题合起来求原始问题的解的代价, 即将两个有序的子数组合并为一个有序的数组。在最终的合并阶段, 键值的比较的代价, 在最坏的情况下是 n-1 ,( 比如每个数组的第 i 号轮流被放入数组),根据主定理, T(n)=O(nlogn) 。 b. 0-1 背包问题问题描述:在0/1 背包问题中, 需对容量为 W 的背包进行装载。从 n 个物品中选取装入背包的物品, 每件物品 j 的重量为 wj, 价值为 vi 。对于可行的背包装载,背包中物品的总重量不能超过背包的容量,最佳装载是指所装入的物品价值最高。有3 中方法可解: 动态规划法: 递推式: K(w,j)=max{K(w-wj, j-1)+vj, K(w,j-1)} w≥ wj K(w,j)=K(w,j-1) w< wj 初始条件: K(0,j)=0, K(w, 0)=0. 初始化条件表示把前面i 个物品装入容量为0 的背包和把0 个物品装入容量为 j 的背包,得到的价值均为 0。第二个式子说明: 如果第 i 个物品的重量大于背包的容量, 则装入第i 个物品得到的最大价值和装入第 i-1 个物品得到的最大价值是相同的,即物品 i 不能装入背包中。第一个式子说明: 如果第 i 个物品的重量小于背包的容量, 则会有两种情况:( 1 )如果把第 i 个物品装入背包,则背包中物品的价值就等于把前 i-1 个物品装入容量为 iwj 的背包中的价值加上第i 个物品的价值 iv;(2 )如果第 i 个物品没有装入背包,则背包中物品的价值就是等于把前 i-1 个物品装入容量为 j 的背包中所取得的价值。显然, 取二者中价值较大者作为把前 i 个物品装入容量为 j 的背包中的最优解

最近更新

2025年最新大学生自我鉴定范文 7页

2025年最新国际货物买卖合同合集大全 10页

中国酒模特大赛“特殊总冠名”策划方案 8页

ARM体系结构与编程-第六章 88页

二零二五年度大清包劳务合同(数据中心基础设.. 42页

二零二五年度外卖外卖平台外卖外卖餐盒回收代.. 43页

二零二五年度城市地下空间开发利用工程方合作.. 48页

2025版《新高考》圆锥曲线习题册 48页

chapt 10供应链管理 36页

二零二五年度公共卫生安全责任方合同模板(适.. 44页

二零二五年度企业可持续发展培训服务采购专项.. 133页

二零二五年度交通基础设施建设垫资协议3篇 42页

专业财务代理记账服务合同范本 2页

个人住房贷款连带责任担保合同范本 2页

二零二五学校教师职工绩效考核管理合同3篇 45页

个人经营性贷款担保合同规范文本 3页

中小企业担保贷款合同标准模板 3页

临时仓储物流操作工劳务合同 3页

高二作文敬例文 6页

互联网+时代员工劳动合同模板 3页

互联网货物质押项目合作协议 3页

酒店业主代表 责权利 12页

产业园区投融资合作协议 4页

产权式商铺租赁与物业管理综合服务协议 3页

人工智能教育机器人研发与应用合同 3页

仓储物流中心租赁管理协议 3页

QC T 262-2024《汽车渗碳齿轮金相检验》 18页

桥梁建设协议书 5页

兰州市机动车停车场管理办法全文 11页

全国中学生物理竞赛实验指导书思考题参考答案.. 8页