| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6793 人关注过本帖
标题:关于求数组元素众数的C算法,求大神解答!
取消只看楼主 加入收藏
胡胡熊
Rank: 1
等 级:新手上路
帖 子:23
专家分:5
注 册:2014-3-13
结帖率:77.78%
收藏
已结贴  问题点数:20 回复次数:2 
关于求数组元素众数的C算法,求大神解答!
下面的是我的程序。程序功能是求数组中99个元素的众数,这段程序运行正常,能够打印出该数组元素的众数。
后来我发现了一个漏洞,就是如果该数组元素中存在多个众数的话,我这段程序只能找到其中的一个。我想了很久,没有想出怎么才能设计出能够输出过个众数情况的算法。
请各位大神指点!
Thank you in advance!


    int array[99] = {6,7,8,9,8,7,8,9,8,9,7,8,9,5,9,8,7,8,7,8,6,7,8,9,3,9,8,7,8,7,7,8,9,8,9,8,9,7,8,9,6,7,8,7,8,7,9,8,9,2,7,8,9,8,9,8,9,7,5,3,
                     5,6,7,2,5,3,9,4,6,4,7,8,9,6,8,7,8,9,7,8,7,4,4,2,5,3,8,7,5,6,4,5,6,1,6,5,7,8,7};
    int frequency[10] = {0};
    int i, Current_ZhongShu = 1;

    for(i=0;i<99;i++)
    {
        ++frequency[array[i]];               
    }
   
    for(i=2;i<10;i++)
    {
        if(frequency[Current_ZhongShu]<frequency[i])
        {
            Current_ZhongShu = i;
        }   
    }
    printf("The ZhongShu is: %d\n",Current_ZhongShu);


搜索更多相关主题的帖子: Thank 元素 
2014-03-15 16:28
胡胡熊
Rank: 1
等 级:新手上路
帖 子:23
专家分:5
注 册:2014-3-13
收藏
得分:0 
回复 4楼 fragileeye
非常感谢!我按照你提出的算法确实写出了正确的程序。算法简单易实现。
非常感谢这位大神!
#include <stdio.h>
#define SIZE 99

main()
{
    int array[SIZE] = {1,1,1,1,1,1,1,1,1,1,
                       4,4,4,4,4,4,4,4,4,4,
                       9,9,9,9,9,9,9,9,9,9,
                       1,1,1,1,1,1,1,1,1,1,
                       4,4,4,4,4,4,4,4,4,4,
                       9,9,9,9,9,9,9,9,9,9,
                       1,1,1,1,1,1,1,1,1,1,
                       4,4,4,4,4,4,4,4,4,4,
                       9,9,9,9,9,9,9,9,9,9,
                       0,0,0,0,0,0,0,0,0};
    int a,i, b = 0, ModeFrequency,CurrentMode = 0;
    int frequency[10] = {0};
    int Mode[10] = {0};

    for(i=0;i<SIZE;i++)
    {
        ++frequency[array[i]];
    }
   

    for(i=1;i<10;i++)
    {
        if(frequency[CurrentMode]<frequency[i])
        {
            CurrentMode = i;
        }   
    }
    Mode[b++] = CurrentMode;
    ModeFrequency = frequency[CurrentMode];
    frequency[CurrentMode] = 0;


    for(i=1;i<10;i++)
    {
        if(ModeFrequency == frequency[i])
        {
            Mode[b++] = i;
            frequency[i] = 0;
        }   
    }

    i =0;
    while(Mode[i] != 0)
    {
        printf("the mode is: %d\n",Mode[i]);                         // 输出众数
        i++;
    }

    return 0;   
}
2014-03-16 19:38
胡胡熊
Rank: 1
等 级:新手上路
帖 子:23
专家分:5
注 册:2014-3-13
收藏
得分:0 
回复 6楼 冯静
非常感谢你给我写的程序。我运行的时候产生了一个error,你能不能把你程序的执行的算法跟我说说。非常感谢这位大神!
2014-03-16 19:43
快速回复:关于求数组元素众数的C算法,求大神解答!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022801 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved