众数问题算法思想

来源:百度知道 编辑:UC知道 时间:2024/06/20 17:30:22
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(l,l1-1);
if(r-r1>largest) mode(r1+1,r);

}
问题补充:median是用于找中位数,split用中位数将数组分割成两段。

中位数、众数、平均数都可以作为一组数据的代表来反映问题的各种情况.

平均数、众数、中位数这三个统计量的区别是:
平均数的大小与一组数据里的每个数据均有关系,其中任何数据的变动都会相应引起平均数的变动;我们知道计算平均数时用到了每个数据,所以它对数据的变化比较敏感,与中位数和众数相比,平均数有时能够获得更多的信息,它可以说是一组数据的的重心

众数----一组数据中出现次数最多的那个数据,叫做这组数据的众数(mode).

众数着眼于对各数据出现的次数的考察, 是一组数据中的原数据,其大小只与这组数据中的部分数据有关,当一组数据中有不少数据多次重复出现时,其众数往往是我们关心的一种统计量; 注意:一组数据中的众数有时不只一个,如数据2、3、-1、2、l、3中,2和3都出现了2次,它们都是这组数据的众数.
中位数----把n个数据按大小顺序排列,处于最中间位置的一个数据(或)叫做这组数据的中位数(median).中位数则仅与数据排列位置有关,当一组数据从小到大排列后,最中间的数据为中位数(偶数个数据的最中间两个的平均数)。因此某些数据的变动对它的中位数影响不大。当一组数据中的个别数据变动较大时,可用它来描述其集中趋势

注意:(1)求中位数要将一组数据按大小顺序,而不必计算,顾名思义,中位数就是位置处于最中间的一个数(或最中间的两个数的平均数),排序时,从小到大或从大到小都可以.

(2)在数据个数为奇数的情况下,中位数是这组数据中的一个数据;但在数据个数为偶数的情况下,其中位数是最中间两个数据的平均数,它不一定与这组数据中的某个数据相等.
在同一组数据中,众数、中位数和平均数也各有其特性:
(1)中位数与平均数是唯一存在的,而众数是不唯一的;
(2)众数、中位数和平均数在一般情况下是各不相等,但在特殊情况下也可能相等。

a呢

假设数组为a[10000000000000]把
int b[100000000000][2]={0} /*不会出现的数 或空(我不会)*/
int i=0,j=0;