找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1797|回复: 0
打印 上一主题 下一主题
收起左侧

求众数C代码

[复制链接]
跳转到指定楼层
楼主
ID:75926 发表于 2015-4-10 17:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include "stdio.h"

  2. typedef struct
  3. {
  4.     int num;//记录数据
  5.     int cont;//记录该数据出现的次数
  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. }
复制代码





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表