C语言统计相同数列的问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 16:06:16
如果说有一个数组a[]={1,1,1,2,2,3,3,3,4,4,4,4,4}
如何统计出相同元素的个数?并找出元素最多,和元素最小的个数及他的元素,
我的思路是让两个数比较,如果相等,让统计个数的变量加1,(个数从1开始),然后不相等时,返回统计的变量,然后,重新将统计变量回归1再统计。这梓一来,只能统计出一个元素的值,其他就错了,其余的两问,更无法成,请问,这题的思路和程序代码是什么

设置相同大小的数组 如
b[13]={0}

我的思路是这样的

以 b的大小为循环 基础,把a数组中的统计相同数的个数,如
for(int loopi=0 ; loopi < length(b);loopi++)
{
if (b[loopi] == -1) //已经统计过的了
{
continues;
}
int TempNum = a[loopi] ;
int Allnum = 1;
for(int loopj = loopi+1; loopj <length(a);loopj++)
{
if (TempNum ==a[loopj ] )
{
b[loopj ] =-1;
Allnum ++;
}
}
b[loopi] =Allnum;

}

这里就统计出了a 各个相同函数的个数,在b数组中,和a 相对应,这样就可以得到你上面需要求解的问题。

分数太少了……

我想问一下,这个a数组里的数有范围吗?

我比如一下,这个a数组里只有1,2,3,4,四个数,希望能有点提示给你

n//是数组a的个数
//b[1]是1的个数,依次类推
maxNumber=0,max,minN=0,min=0;
for(i=1;i<=n;i++)
b[a[i]]++;
for(i=1;i<=4;i++)
{
if(maxNumber>b[i]) {maxNumber=b[i];max=i;}
if(minN<b[i]){minNumber=b[i];min=b[i];}
}

你看这样可以不?

我的方法是:先按升序进行排序.然后再比较.比较的时候要用到一个栈.
先第一个数进栈.然后第一个数和第二个数比较,
如果第二个数与第一