寻找众数是常见的算法,这里的总数是指出现次数大于一半的数。

常见的解决办法有如下几种:

1.逐个统计每个数出现的次数,时间复杂度为O(n*n)(n*(n-1)/2+n),n指数组元素的个数。

2.对数组进行排序,得出中间(n/2)元素就是众数。证明用反证法,如果中间元素不是,则众数出现的次数小于一半。排序可以用计数排序O(n)达到最好,最后的结果也是最好。

3.上述排序的方法虽然时间复杂度是线性的,但是还有一定的计算量。试想,既然众数是出现次数大于一半的数,那么对数组每次删除两个不同元素(不管是否包含众数)后得到的子问题应该和原问题在本质上没有改变。实现代码如下:

#include

#include

int findMode(int* ID, int N)

{

int candidate;

int nTimes, i;

for(i = nTimes = 0; i < N; i++)

{

if(nTimes == 0)

{

candidate = ID[i];

nTimes = 1;

}

else

{

if(candidate == ID[i])

nTimes++;

else

nTimes--;

}

}

return candidate;

}

int main(int argc, char *argv[]){  int a[10];  int i;  for(i = 0; i < 10; i++)  {       if(i < 4)            a[i] = 8;       else           a[i] = 2;  }  printf("%d\n", findMode(a, 10));  system("PAUSE");   return 0;}

找众数的算法代码c语言,寻找众数算法相关推荐

  1. DDA画线算法+代码详解-直线扫描算法之一

    #DDA画线算法+代码详解-直线扫描算法之一 本文目录结构如下 1.直线扫描算法简介 2.DDA直线扫描算法 2.1 公式推理 1.求斜率K: 2.当|K| <= 1 时 3.当|K| > ...

  2. fifo算法c语言程序代码,c语言实现fifo算法及代码

    C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言. 尽管C语言提供了许多低级处理的功 ...

  3. c语言选择排序详解及代码,C语言选择排序算法及实例代码

    选择排序是排序算法的一种,这里以从小到大排序为例进行讲解. 基本思想及举例说明 选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置:然后,选出第二小的数,放在第二个位置:以此类推,直 ...

  4. c语言凸包算法,基于C语言的凸包算法实现

    基于C语言的凸包算法实现 非计算机专业,代码有些的不好的地方,大佬轻喷^ _ ^ 根据要求,需要使用C语言实现凸包算法--Graham扫描法,本文将从算法理解.实现思路.遇到的问题及其解决方案三个方面 ...

  5. apriori算法代码_sklearn(九)apriori 关联规则算法,以及FP-growth 算法

    是什么: apriori算法是第一个关联规则挖掘算法,利用逐层搜索的迭代方法找出数据库中的项集(项的集合)的关系,以形成规则,其过程由连接(类矩阵运算)与剪枝(去掉没必要的中间结果)组成.是一种挖掘关 ...

  6. 先来先服务算法代码_一致性哈希算法编写

    今天我想先给大家科普下一致性哈希算法这块,因为我下一篇文章关于缓存的高可用需要用到这个,但是又不能直接在里面写太多的代码以及关于一致性hash原理的解读,这样会失去对于缓存高可用的理解而且会造成文章很 ...

  7. c语言编程算法精选,c语言经典程序算法【DOC精选】.doc

    c语言经典程序算法[DOC精选] c语言经典程序算法 浏览次数:47017次悬赏分:15 | 解决时间:2007-9-14 10:02 | 提问者:liyufei05j3 最佳答案 经典C源程序100 ...

  8. c语言数据结构插入算法说明,C语言数据结构插入算法

    C语言数据结构插入算法 C语言数据结构插入算法 C语言数据结构 数据结构学习 ->是二目运算符 p->a 引用了指针p指向的结构体的成员a. 整合 void unionL(List *La ...

  9. matlab中存档算法代码,Matlab中的FCM算法代码及中文详解

    Matlab中的FCM算法代码及中文详解 转自:http://xiaozu.renren.com/xiaozu/106512/336681453 function [center, U, obj_fc ...

  10. c语言银行算法管理,C语言实现银行家算法

    C语言实现银行家算法 C语言实现银行家算法(源码.运行结果) 一. 源码 /* 银行家算法 10-22 */ #include //函数声明 void init(int * pcount,int * ...

最新文章

  1. 同一天,数学和计算机界“诺奖”分别揭晓
  2. 为.NET部署应用程序添加个卸载程序
  3. ubuntu下wget下载Linux内核源码、make生成.config文件
  4. SpringSecurity分布式整合之分布式认证流程说明
  5. java 邮件 附件_java中javamail发送带附件的邮件实现方法
  6. clickhouse 重启_篇一|ClickHouse快速入门
  7. 海南小地图(echart)
  8. BZOJ1588: [HNOI2002]营业额统计
  9. python中pycharm倒计时_pycharm中的快捷键和简单设置
  10. MES系统最全介绍来了
  11. YUI3学习(二)--YUI Global Object
  12. Wpf 初学---01设计一个优美的注册界面
  13. Java8新特性DateTime使用
  14. 27亿美元的NASA「毅力号」成功登陆火星!还带了一架1%大气密度也能飞的无人机...
  15. android 手机远程助手,安卓远程桌面软件
  16. 2018 考研 408 经验贴——复试
  17. DeviceOrientation ---实现指南针
  18. 重装系统时的硬盘格式化
  19. android下划线链接,android7.0 TextView去除超链接下划线就这么难吗?
  20. python三维曲面合并_绘制多面体的三维曲面

热门文章

  1. 在Java中不允许使用使用一下字母组合作为文件名(不区分):CON,PRN,AUX,NUL,COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9,LPT1,LPT2
  2. 1.17 “干项目太累,那是因为姿势不对” Stacey矩阵
  3. Vmware、Virtuozoo、Virtual Server 、Xen四款虚拟机的性能比较
  4. 近几年Linux TCP相关的漏洞被夸大了
  5. Excel录入证件号码无法正常显示,不用担心这样做一键帮你搞定!
  6. 一个牛人在美国的跳槽经历(转)
  7. python链家数据分析统计服_Python数据分析实战-链家北京二手房价分析
  8. 小米手机、一加手机、华为手机、小米手环NFC刷门禁卡,全教程!
  9. 笔记本加装固态硬盘后系统迁移,开机出现桌面闪烁问题的解决方法
  10. python股票量化分析