标签:
★问题描述:
给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。
例如,S={1,2,2,2,3,5}。
多重集S的众数是2,其重数为3。
★编程任务:
对于给定的由n个自然数组成的多重集S,编程计算S的众数及其重数。
★数据输入:
输入数据由文件名为input.txt的文本文件提供。文件的第1行多重集S中元素个数n;接下来的n行中,每行有一个自然数。
★结果输出:
程序运行结束时,将计算结果输出到文件output.txt中。输出文件有2行,第1行给出众数,第2行是重数。
输入文件示例 输出文件示例
input.txt output.txt
6 2
1 3
2
2
2
3
5
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1、数组的众数求法
这回是对上次发帖后改用分治法解决的,还有待改进之处。
第二种
void mode(int l,int r){
int l1,r1;
int med=median(a,l,r);
split(a,med,l,r,l1,r1);
if(largest<r1-l1+1){
largest=r1-l1+1;
element=med;
}
if(l1-1>largest)
mode(1,l1-1);
if(r-r1>largest)
mode(r1+1,r);
}
3、利用先排序,然后统计个数。考虑时间效率,采用快排,count (统计个数),maxCount(最多的个数),element(重数最大的数即众数)
4.可以利用散列法。
标签:
原文地址:http://www.cnblogs.com/hoojjack/p/4213788.html