|
- #include "stdio.h"
- typedef struct
- {
- int num;//記錄數(shù)據(jù)
- int cont;//記錄該數(shù)據(jù)出現(xiàn)的次數(shù)
- }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;
- }
復(fù)制代碼
|
|