寻找众数问题实验报告.docVIP

  • 133
  • 0
  • 约5.4千字
  • 约 10页
  • 2016-04-06 发布于湖北
  • 举报
《算法设计与分析》 上 机 实 验 报 告 专 业 软件工程 班 级 1101班 学 号 学生姓名 岳彦利 完成日期 2013-10-24 1. 上机题目及实验环境 1.1上机题目:众数问题 1.2实验环境: CPU:英特尔 第二代酷睿i3-2330M @2.2GHz 双核 内存:4G 操作系统:window s 7 软件平台:ubuntu 2. 算法设计与分析 1. 用快速排序把随机生成的一组数排序放到数组中。 2.把排好的数组用下标按次序逐个比较,如果相等就用count=count+1,设个标记的flag,将count赋给flag,不相等就count=1,下标相加,循环,直到最后一个数。 3.在把最后比较的数放到x中,最终输出次数最多的数x和它的次数flag. 3. 核心代码 //快速排序递归,a[]代表数组,low代表数组的第一个数的下标,high代标数组最后一个数的下标 int Partition(int a[],int low,int high) { int x=a[low];//将数组的第一个数赋给x while(lowhigh) { while(a[high]=x lowhigh)//从后往前找比x小的数 high--; if(lowhigh) { a[low]=a[high];//从后往前找到比x小的数赋给a[low] low++; } while(a[low]x lowhigh)//从前往后找比x大的数 low++; if(lowhigh) { a[high]=a[low];//从前往后找比x大的数赋给a[high] high--; } } a[low]=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(in) { if(a[i+1]==a[i])//判断是否相等 { count++; if(count==flag) { flag1=count; x1=a[i]; } if(countflag) { flag=count; x=a[i]; } } else count=1; i++; } printf(output put:\n); if(flag==1) p

文档评论(0)

1亿VIP精品文档

相关文档