找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2250|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

求眾數(shù)C代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:75926 發(fā)表于 2015-4-10 17:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. #include "stdio.h"

  2. typedef struct
  3. {
  4.     int num;//記錄數(shù)據(jù)
  5.     int cont;//記錄該數(shù)據(jù)出現(xiàn)的次數(shù)
  6. }Mode;

  7. void swap(int *a,int *b)
  8. {
  9.     *a=*a^*b;
  10.     *b=*a^*b;
  11.     *a=*a^*b;
  12. }

  13. void Sort(int *p,int cnt)
  14. {
  15.     int i,j,k;
  16.     for(i=0;i<cnt-1;i++)
  17.     {
  18.         k=i;
  19.         for(j=i+1;j<cnt;j++)
  20.         {
  21.             if(*(p+j)>*(p+k))
  22.                 k=j;
  23.         }
  24.         if(k!=i)
  25.             swap(p+i,p+k);
  26.     }
  27. }
  28. void Out(int *p,int cnt)
  29. {
  30.     int i;
  31.     for(i=0;i<cnt;i++)
  32.     {
  33.         printf("%d ",*(p+i));
  34.     }
  35.     printf("\n");
  36. }

  37. void Mode_swap(Mode *p,Mode *q)
  38. {
  39.     Mode a;
  40.     a=*p;
  41.     *p=*q;
  42.     *q=a;
  43. }

  44. void Mode_Out(Mode *p,int cnt)
  45. {
  46.     int i=0;
  47.     for(;i<cnt;i++)
  48.     {
  49.         printf("%d the frequency of occurrence:%d\n",(p+i)->num,(p+i)->cont);
  50.     }
  51. }

  52. void Mode_Sort(Mode *p,int cnt)
  53. {
  54.     int i,j,k;
  55.     for(i=0;i<cnt-1;i++)
  56.     {
  57.         k=i;
  58.         for(j=i+1;j<cnt;j++)
  59.         {
  60.             if((p+j)->cont>(p+k)->cont)
  61.                 k=j;
  62.         }
  63.         if(k!=i)
  64.             Mode_swap((p+i),(p+k));
  65.     }
  66. }

  67. void Modes(int *p,int cnt)
  68. {
  69.     Mode ZS[20];
  70.     int i,j=1;
  71.     Sort(p,cnt);
  72.     for(i=0;i<20;i++)
  73.         ZS[i].cont=1;

  74.     ZS[0].num=*p;
  75.     for(i=1;i<cnt;i++)
  76.     {
  77.         if(*(p+i-1)==*(p+i))
  78.             ZS[j-1].cont++;
  79.         else
  80.         {
  81.             ZS[j++].num=*(p+i);
  82.         }
  83.     }
  84.     Mode_Out(ZS,j);

  85.     Mode_Sort(ZS,j);
  86.     printf("\nMode is %d",ZS->num);
  87. }

  88. int main()
  89. {

  90.     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;

  91.     Modes(a,sizeof(a)/4);


  92.     return 0;
  93. }
復(fù)制代碼





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表