- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法設计大作业之寻找多数元素
寻找最大元素
一,问题描述:
令A[1…n]是一个整数序列,A中的整数a如果在A中出现的次数多于,那么a称为多数元素。例如,在序列1,3,2,3,3,4,3中,3是多数元素,因为7个元素中它出现的次数为4,大于3。
设计一个性能比较优异的算法求解这个问题。
二,算法描述:
本算法得益于这样一个观察结论:在原序列中去除两个不同的元素以后,原序列中的多数元素在新的序列中还是多数元素。此结论的数学证明省略。
本算法的语言描述如下:将计数器置1,并令c=A[1],从A[2]开始,逐个的扫描元素,如果被扫描的元素和c相等,则计数器加1;若果元素不等于c,则计数器减1;如果所有的元素都已经扫描完毕并且计数器大于0,那么返回c作为多数元素的候选者。如果在c和A[j](1jn)比较时计数器为0,那么对于A[j+1…n]上的元素递归调用candidate过程。
算法如下:
三,程序代码:
# include stdio.h
# include stdlib.h
int candidate(int A[],int m,int n);
int majority (int A[],int n);
int i=1,count,c,j;
void main()
{
int c,num[100],a,n,j;
j=0;n=0;
printf(please input the numbers and use 00 to stop (you can input 100 numbers) \n);
while(1)
{
scanf_s(%d,a);
if (a!=00)
{
num[j]=a;
j=j+1;
n=n+1;
}
else
break;
}
printf(you have inputed %d numbers totally,n);
printf(\nthe numbers you input are as follows\n);
for(j=0;jn;j++)
printf(%5d,num[j]);
c=majority (num,n);
if (c!=0)
printf(\nand the most number is %d \n,c);
else
printf(\nbut the most number is not exsited);
system(PAUSE);
}
int candidate(int A[],int m,int n)
{
c=A[m];
count=1;
for(j=m+1;jncount0;j++)
{
if(A[j]==c)
count++;
else
count--;
}
if (j==n)
return c;
else
return candidate(A,j+1,n);
}
int majority (int A[],int n)
{
int i;
c=candidate(A,0,n);
for (i=0;in;i++)
if (A[i]==c)
count++;
if (countn/2)
return c;
else
return 0;
}
代码运行结果如下:
(1),没有最大元素的情况
(2)有最大元素的情况
四,递归过程展示:
candidate(1)
j=1,c=A[1]=1,count=1
j=2,A[2]!=c=1,count=0
j=2!=n=10
candidate(3)
j=3,c=A[3]=3,count=1
j=4,A[4]=2!=c=3,count=0
j=4!=n=10
candidate(7)
j=7,c=A[7]=8,count=1
j=8,A[8]=2!=c=8,count
j=8!=n=10
candidate(9)
j=9,c=A[9]=5,count=1
j=10,A[10]=2!=c=5,count=0
j=10=n=10,return c=5
majority:
c=candidate(1)=5
count=0
j=1 to n
count=2
count=25
return none
candidate(1)
j=1,c=A[1]=1,count
j=1!=n=11
j=2,A[2]=2!=c=1,count=0
j=2!=n
您可能关注的文档
- 算法合集之《置換群快速幂运算研究与探讨》.doc
- 算法合集之《論随机化算法的原理与设计》.doc
- 算法合集之《退一步海闊天空“目标转化思想”的若干应用》.doc
- 算法合集之《非完美算法初探》..doc
- 算法合集之《非最優化算法初探》.doc
- 算法實验报告13gis专升本.doc
- 算法實验指导V20.doc
- 算法效率分析..doc
- 算法案例--題目.doc
- 算法案例知識讲解.doc
- 新解读《GB_T 27810 - 2011色漆和清漆用漆基 凝胶渗透色谱法(GPC) 用四氢呋喃做洗脱剂》必威体育精装版解读.docx
- 新解读《GB_T 27772-2011病媒生物密度控制水平 蝇类》必威体育精装版解读.docx
- 新解读《GB_T 28226 - 2011地名信息交换格式》必威体育精装版解读.docx
- 新解读《GB_T 32448-2015胶粘剂中可溶性重金属铅、 铬、 镉、 钡、 汞、 砷、 硒、 锑的测定》必威体育精装版解读.docx
- 新解读《GB_T 17626.9 - 2011电磁兼容 试验和测量技术 脉冲磁场抗扰度试验》必威体育精装版解读.docx
- 新解读《GB_T 19661.2 - 2015核仪器及系统安全要求 第2部分:放射性测量计的结构要求和分级》必威体育精装版解读.docx
- 新解读《GB_T 28211 - 2011实验室玻璃仪器 过滤漏斗》必威体育精装版解读.docx
- 新解读《GB_T 32413 - 2015网络游戏外挂防治》必威体育精装版解读.docx
- 新解读《GB_T 5203 - 2011核反应堆安全逻辑装置特性和检验方法》必威体育精装版解读.docx
- 新解读《GB_T 15487 - 2015容积式压缩机流量测量方法》必威体育精装版解读.docx
最近下载
- 房建项目管理经验.pptx VIP
- Friends老友记中英文对照第一季剧本.doc VIP
- 关于深化机关党建与业务融合发展的实施意见.docx VIP
- 项目三 任务三 旅游业上(教案)-《旅游概论》 (高教社第二版)同步精品课堂.docx VIP
- 2025下半年四川乐山市川投峨眉铁合金(集团)有限责任公司对外招聘20人笔试参考题库附答案解析.docx VIP
- 人教版年五年级数学上册集体备课教案(最全).doc VIP
- 经济统计学专业人才培养方案.pdf VIP
- 新部编版三年级语文上册《习作:写日记》ppt教学课件.pptx VIP
- 小学语文3年级上册第5课《铺满金色巴掌的水泥道》教案 .pdf VIP
- (word完整版)光伏发电工程施工规范50794- .pdf VIP
文档评论(0)