算法实验报告.doc

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程实验报告书 实验:2015算法实验 输油管道问题 1.思路:实验所采用的设计思路和方案/方法 备注:说明实验的设计思路、方案/方法并进行方案选择。阐明为什么要选择这个设计思路和方案/方法完成该实验,以及所采用设计思路和方案/方法的特点。 问题如图: 输油管道问题 Time Limit: 2000MS Memory Limit: 32768K Description 某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n 口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油井的位置,即它们的x 坐标(东西向)和y 坐标(南北向),应如何确定主管道的最优位置, 即使各油井到主管道之间的输油管道长度总和最小的位置?证明可在线性时间内确定主管道的最优位置。 给定n 口油井的位置,计算各油井到主管道之间的输油管道最小长度总和。要求使用快速排序. Input 输入的第1 行是油井数n,1=n=10000。接下来n 行是油井的位置,每行2个整数x和y,-10000=x,y=10000。 Output 输出油井到主管道之间的输油管道最小长度总和。 Sample Input 5 1 2 2 2 1 3 3 -2 3 3 Sample Output 6 设计思路 本题经过思考,我们可以很快发现输入数据的x与题目要求没有关系。并得出公式:设主管道的位置为k,则(yi-k)的和即为答案,经过思考,我们可以很快得出,当主管道为中位数时,加和最小,因为如果设为其他值时,都会多增加过中位数的数值。 (2)方案 最基本的方法是直接快速排序,然后取中间树,这样子的时间复杂度为O(n),但是,仔细思考一下快速排序的性质,我们可以很快发现更优的做法。使用快速排序查找第n/2大的数值,因为每经过一次变换后,我们都能将数值分成大于关键字的部分,和小于关键字的部分,每次进行一次与中间位置的比较,便可以在 O(n)的时间内找到第n/2大的值。 2.过程:实验过程 备注:重点说明该实验/设计是如何实现的,以及其他的实验过程。 #includeiostream #includecstdio #includecstring #includealgorithm #includecmath using namespace std; #define maxn 12000 int k[maxn]; int Qsort(int a[], int low, int high, int dis) { if(low = high) { return a[low]; } int first = low; int last = high; int key = a[first];/*用字表的第一个记录作为枢轴*/ while(first last) { while(first last a[last] = key) { --last; } a[first] = a[last];/*将比第一个小的移到低端*/ while(first last a[first] = key) { ++first; } a[last] = a[first]; /*将比第一个大的移到高端*/ } a[first] = key;/*枢轴记录到位*/ if(firstdis) Qsort(a, low, first-1, dis); else Qsort(a, first+1, high, dis); } int main() { int n; while(cinn){ int a,b; for(int i=1;i=n;i++) { cinab; k[i]=b; } int mid = Qsort(k, 1, n ,n/2); //找中位数 int ans = 0; for(int i=1;i=n;i++) { ans += abs(k[i]-mid); } coutansendl; } } 3.结果:结果分析 备注:对研究过程中所获得的主要的数据、现象进行定性或定量分析,得出结论和推论。包括但不限于数据表、截图等。 结果 第一组 第二组 数据太长,这里只给出结果 分析、结论 分析:每次运用快速排序找出左边和右边,使得只须经过O(n)就能找

文档评论(0)

***** + 关注
实名认证
内容提供者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档