标题:
求众数C代码
[打印本页]
作者:
xiaos
时间:
2015-4-10 17:25
标题:
求众数C代码
#include "stdio.h"
typedef struct
{
int num;//记录数据
int cont;//记录该数据出现的次数
}Mode;
void swap(int *a,int *b)
{
*a=*a^*b;
*b=*a^*b;
*a=*a^*b;
}
void Sort(int *p,int cnt)
{
int i,j,k;
for(i=0;i<cnt-1;i++)
{
k=i;
for(j=i+1;j<cnt;j++)
{
if(*(p+j)>*(p+k))
k=j;
}
if(k!=i)
swap(p+i,p+k);
}
}
void Out(int *p,int cnt)
{
int i;
for(i=0;i<cnt;i++)
{
printf("%d ",*(p+i));
}
printf("\n");
}
void Mode_swap(Mode *p,Mode *q)
{
Mode a;
a=*p;
*p=*q;
*q=a;
}
void Mode_Out(Mode *p,int cnt)
{
int i=0;
for(;i<cnt;i++)
{
printf("%d the frequency of occurrence:%d\n",(p+i)->num,(p+i)->cont);
}
}
void Mode_Sort(Mode *p,int cnt)
{
int i,j,k;
for(i=0;i<cnt-1;i++)
{
k=i;
for(j=i+1;j<cnt;j++)
{
if((p+j)->cont>(p+k)->cont)
k=j;
}
if(k!=i)
Mode_swap((p+i),(p+k));
}
}
void Modes(int *p,int cnt)
{
Mode ZS[20];
int i,j=1;
Sort(p,cnt);
for(i=0;i<20;i++)
ZS[i].cont=1;
ZS[0].num=*p;
for(i=1;i<cnt;i++)
{
if(*(p+i-1)==*(p+i))
ZS[j-1].cont++;
else
{
ZS[j++].num=*(p+i);
}
}
Mode_Out(ZS,j);
Mode_Sort(ZS,j);
printf("\nMode is %d",ZS->num);
}
int main()
{
int a[]={1,2,2,5,5,5,5,6,6,9,4,1,2,2,2,2,2,2,2,5,6,3,4,5},*p;
Modes(a,sizeof(a)/4);
return 0;
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1