版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、算法设计与分析上 机 实 验 报 告专 业 软件工程班 级 1101班学 号 学生姓名 岳彦利完成日期 2013-10-241. 上机题目及实验环境1.1上机题目:众数问题1.2实验环境:CPU:英特尔 第二代酷睿i3-2330M 2.2GHz 双核内存:4G操作系统:window s 7软件平台:ubuntu2. 算法设计与分析 1. 用快速排序把随机生成的一组数排序放到数组中。 2.把排好的数组用下标按次序逐个比较,如果相等就用count=count+1,设个标记的flag,将count赋给flag,不相等就count=1,下标相加,循环,直到最后一个数。 3.在把最后比较的数放到x中,最
2、终输出次数最多的数x和它的次数flag.3. 核心代码/快速排序递归,a代表数组,low代表数组的第一个数的下标,high代标数组最后一个数的下标int Partition(int a,int low,int high) int x=alow;/将数组的第一个数赋给x while(low=x & lowhigh)/从后往前找比x小的数 high-; if(lowhigh) alow=ahigh;/从后往前找到比x小的数赋给alow low+; while(alowx & lowhigh)/从前往后找比x大的数 low+; if(lowhigh) ahigh=alow;/从前往后找比x大的数赋给
3、ahigh high-; alow=x; return low;/开速排序void QuickSort(int a,int low,int high) if(lowhigh) int pos=Partition(a,low,high);/递归调用 QuickSort(a,low,pos-1); QuickSort(a,pos+1,high); /查找众数void findmode(int a,int n) int count=1,flag=1,flag1=0; int i=0,x,x1; while(iflag) flag=count; x=ai; else count=1; i+; prin
4、tf(output put:n);if(flag=1)printf(没有众数!n);else if(flag=flag1) printf(众数是:%d,%dn出现的次数都是:%dn,x,x1,flag);else printf(%dn%dn,x,flag);4. 运行与调试 图一.当没有众数的错误情况 图二.没有众数的正确情况 图三.输出含有两个众数错误情况 图四.输出含有两个众数正确的情况 图五.输出含有1个众数的情况5. 结果分析和小结(1)如图一,是因为没有考虑到count=1时要输出的输出的数,所以输出的是一个垃圾数据,后来,加了一个标志flag,如果flag没有变就代表数组中没有众数
5、,修改后如图二。 如图二,没有考虑到1,1,2,2,3的那种情况,每次就能输出1,后来在比较countflag前比较一下相等,再把2的值赋给另一个数,最后把两种情况都输出就可以了,修改后如图四。如图五:从键盘输入的8代表要随机生成随机数的个数,output number:代表从文件中读出的数,第一个数是总随机个数,剩下的是产生的随机数,最下面两行5众数,4代表5出现的次数。(2)让我更熟悉分治法,对快速排序有了更深的理解,在写的过程中出现了段错误,调试了好久才发现是因为定义出了错,感觉自己需要学习的太多了,只有上机编写才能发现自己真正的问题,除此之外感觉编程也很有趣。附录(C/C+源代码)#i
6、nclude#include#include#include#include/快速排序递归,a代表数组,low代表数组的第一个数的下标,high代标数组最后一个数的下标int Partition(int a,int low,int high) int x=alow;/将数组的第一个数赋给x while(low=x & lowhigh)/从后往前找比x小的数 high-; if(lowhigh) alow=ahigh;/从后往前找到比x小的数赋给alow low+; while(alowx & lowhigh)/从前往后找比x大的数 low+; if(lowhigh) ahigh=alow;/从
7、前往后找比x大的数赋给ahigh high-; alow=x; return low;/开速排序void QuickSort(int a,int low,int high) if(lowhigh) int pos=Partition(a,low,high);/递归调用 QuickSort(a,low,pos-1); QuickSort(a,pos+1,high); /查找众数void findmode(int a,int n) int count=1,flag=1,flag1=0; int i=0,x,x1; while(iflag) flag=count; x=ai; else count=
8、1; i+; printf(output put:n);if(flag=1)printf(没有众数!n);else if(flag=flag1) printf(众数是:%d,%dn出现的次数都是:%dn,x,x1,flag);else printf(%dn%dn,x,flag);main() FILE *fp; int i,d; int n; if(fp=fopen(input.txt,wt)=NULL) printf(fail to open file!n); exit(1); printf(Input number n:n); scanf(%d,&n); int an; fprintf(fp,%dn,n);/将n写入文件 srand(int)time(0);/将产生的随机数在下次时打乱顺序 for(i=0;in;i+) ai=1+(int)(10.0*rand()/(RAND_MAX+1.0);/将产生的随机数写入数组 fprintf(fp,%dn,ai);/将产生的随机数写入文件 fclose(fp); fp=fopen(input.txt,rt);/将结果写入文件 printf(output number:n); i=0;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 麒麟软件2026届春季校园招聘考试备考题库及答案解析
- 2026上海医学院研究生院招聘医学研究生招生和综合管理岗位2人笔试模拟试题及答案解析
- 2026重庆发展能源有限公司招聘5人笔试备考题库及答案解析
- 2026西藏林芝波密县森林草原防灭火地方专业队伍人员招聘17人笔试备考试题及答案解析
- 2026浙江丽水市松阳县卫生健康系统引进医疗卫生专业技术人才5人(一)笔试备考试题及答案解析
- 2026广东广州花都城投产融商业投资有限公司招聘项目用工人员4人笔试备考题库及答案解析
- 2026西藏阿里地区札达县招录网格员7人考试备考题库及答案解析
- 2026中铁快运股份有限公司招聘高校毕业生笔试参考题库及答案解析
- 2026年江苏省灌云县西片重点名校初三模拟版语文试题(10-6)含解析
- 新疆维吾尔自治区乌鲁木齐市2026届初三4月质量调研(二模)语文试题文试题含解析
- T-GFIA 004-2026 特色(呼吸系统调养)森林康养服务规范
- 2026年春季湘少版(三起)四年级下册英语教学计划(含进度表)
- 新东方《中国学生出国留学发展报告》
- 2026年3月15日九江市五类人员面试真题及答案解析
- 文化旅游嘉年华主题活动方案
- 投资促进局内部控制制度
- 2026年常州机电职业技术学院单招职业倾向性测试题库附答案详解(a卷)
- 2026教育培训产业市场供需分析与未来发展预测研究报告
- 2026春统编版六年级道德与法治下册(全册)课时练习及答案(附目录)
- 2024版2026春新版三年级下册道德与法治全册教案教学设计
- 2026年安庆医药高等专科学校单招综合素质考试题库及答案1套
评论
0/150
提交评论