- 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
您可能关注的文档
最近下载
- 普发ASM 340氦质谱检漏仪—操作说明书-中文.pdf VIP
- 慢性阻塞性肺疾病(COPD)的诊治.ppt VIP
- 外研版高中英语必修第一册Unit3 Section Ⅳ Developing ideas—Writing课件.ppt VIP
- 工作相关疾病预防控制措施.pptx VIP
- 广东省高考:2025年-2023年《物理》考试真题与参考答案 .pdf
- Qu系列说明书QU16&QU24(加强版).pdf VIP
- 人教版2021-2022学年小学三年级下册数学期末易错题检测卷(十八)含答案.docx VIP
- 华为技术有限公司公文处理暂行办法.docx VIP
- 免疫治疗相关毒性的管理NCCN(中文版)(2025.V1).pdf VIP
- 2025年贵州省中考英语试卷真题(含答案详解).pdf
原创力文档

文档评论(0)