《算法分析与设》实验指导书(8学时).doc

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《算法分析与设》实验指导书(8学时)

计算机科学与技术学院 算法分析与设计 实验指导书 2011年8月 于洪编写 201年月 目 录 实验一 排序…………………………..…..………3 实验二 …………………..…………..5 实验三 ……………………….8 实验四 最短路径问题……………………10 附录1 关于文件的操作……………………………….….12 附录2 关于如何统计运算时间…………………………..13 实验一 排序 实验目的 1)以排序问题为例,掌握分治法的基本设计策略 2)熟练掌握排序算法的实现; 3)熟练掌握快速排序算法的实现; 4) 理解常见的算法经验分析方法 实验环境 计算机、C语言程序设计环境 实验学时 2学时 实验内容与步骤 实验数据 要求:编写一个函数datagenerate,生成2000个在区间[1,10000]上的随机整数,并将这些数输出到外部文件data.txt中。这些数作为实验的数据。 实现排序算法 要求:实现算法。 输入data.txt; 输出文件resultsS.txt(注:建议将此排好序的数据作为实验二的算法输入);运行时间TimeS。 算法: /* A[] 中包含待排元素;array B[] is a work array */ TopDownMergeSort(A[], B[], n) { TopDownSplitMerge(A, 0, n, B); } // iBegin is inclusive; iEnd is exclusive (即:A[iEnd]不是待排元素) TopDownSplitMerge(A[], iBegin, iEnd, B[]) { if(iEnd - iBegin 2) // 如果只有1个待排元素,返回。 return; // recursively split runs into two halves until run size == 1, // then merge them iMiddle = (iEnd + iBegin) / 2; // 划分 TopDownSplitMerge(A, iBegin, iMiddle, B); TopDownSplitMerge(A, iMiddle, iEnd, B); TopDownMerge(A, iBegin, iMiddle, iEnd, B); // 合并;元素放到数组B中。 CopyArray(B, iBegin, iEnd, A); // copy the merged runs back to A } // left half is A[iBegin : iMiddle-1] // right half is A[iMiddle : iEnd-1] TopDownMerge(A[], iBegin, iMiddle, iEnd, B[]) { i0 = iBegin, i1 = iMiddle; // While there are elements in the left or right runs for (j = iBegin; j iEnd; j++) { // If left run head exists and is = existing right run head. if (i0 iMiddle (i1 = iEnd || A[i0] = A[i1])) { B[j] = A[i0]; i0 = i0 + 1; } else { B[j] = A[i1]; i1 = i1 + 1; } } } CopyArray(B[], iBegin, iEnd, A[]) { for(k = iBegin; k iEnd; k++) A[k] = B[k]; } 实现快速排序算法 要求:实现QuickSort 算法。 输入:待排数据文件data.txt; 输出文件resultsQS.txt;运行时间TimeQS。 快速排序算法: Procedure QuickSortp, q) integer p, q;global n, A(1:n) if p q then j ← q+1 Partition(p, j)A(p)划分元素表A[p : j-1];划分后,划分元

文档评论(0)

nbc152 + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档