版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全管理部部门经理岗位职责
- DB5308T 27-2017 绿色水产养殖企业评价规范
- 2026上海申康医院发展中心公开招聘备考题库及一套答案详解
- 2026甘肃人力委托招聘监理员20人备考题库完整参考答案详解
- 焊接作业准则
- 2026湖北咸宁赤壁市公安局监察勤务辅警招录6人备考题库有答案详解
- 2026广东广州南沙人力资源发展有限公司招聘中学教师岗16人备考题库带答案详解
- 2026云南西双版纳勐海县打洛镇幼儿园编外教师招聘5人备考题库及答案详解1套
- 2026第二季度湖北中国科学院武汉病毒研究所集中招聘备考题库及参考答案详解
- 春秋航空股份有限公司2027届暑期实习生招聘备考题库含答案详解
- 端午节父亲节双节主题班会课件
- 2026年高考政治时政热点(必背)
- 2025-2026学年度江苏省无锡市七年级下学期期末测试模拟卷(含答案)
- 2026云南文山州砚山县昌盛人力资源服务有限公司招聘工作人员1人笔试参考题库及答案详解
- 2026年中级银行从业资格之中级个人理财必刷题库带答案详解(能力提升)
- 城市公交车辆日常安全例检项目及流程
- 2026年陕西高速铁路投资有限公司招聘(5人)考试参考试题及答案解析
- 2025年辽宁高中学业水平合格性考试化学试卷真题(含答案详解)
- 滥用药物危害主题班会课件
- 2026年喷药机行业分析报告及未来发展趋势报告
- 2026年国企内部遴选工作人员笔试试题及答案解析
评论
0/150
提交评论