摩尔投票算法(Moore majority vote algorithm)

这个在wiki的介绍在https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_majority_vote_algorithm,摩尔投票算法是一种使用线性时间和常数空间查找大部分元素序列的算法。它以1981年出版的Robert S. Boyer和J Strother Moore的名字命名,并且是流式算法的典型例子。

最简单的形式就是,查找输入中重复出现超过一半以上(n/2)的元素。如果序列中没有这种元素,算法不能检测到正确结果,将输出其中的一个元素之一。如果不能保证输入数据中有占有一半以上的元素,需要再遍历一下验证。

具体的算法如下,该算法在其局部变量中维护一个序列元素和一个计数器,计数器最初为零。然后,它一次一个地处理序列的元素。处理元素x时,如果计数器为零,则算法将x存储为其维护的序列元素,并将计数器设置为1。否则,它将x与存储的元素进行比较,并使计数器递增(如果相等)或递减计数器(不想等)。

其实我们也可以换个角度想,就是如果存在大于n/2的元素和其他元素,那么实际就是这个元素和其他元素做消除的操作,剩下的那个就是我们要的那个元素。

比如如果一个数组[2,2,1,1,1,2,2],找出其中大于n/2数量的元素是哪一个,当然如果不存在这样的元素,那么摩尔投票算法并不能得出最多的那个,所以要再遍历一遍计算一下。

java 投票算法_摩尔投票算法 - woshixin的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. java遮罩层_页面遮罩层 - javaalex的个人空间 - OSCHINA - 中文开源技术交流社区

    一. 基于ajax请求的遮罩层: $.ajax({ type:'POST', url:url, data:obj, dataType:'json', beforeSend: function () { ...

  2. java 日程日历_日程日历示例 - voxer的个人空间 - OSCHINA - 中文开源技术交流社区...

    这是用户利用do_Gridview和do_ListView及其它组件绘制的日历和任务,基本实现一个完整的在线日程管理功能 先看图,android和ios上的效果图如下: 我们可以看到通过deviceo ...

  3. java运动员最佳配对_运动员最佳配对问题 - osc_y1pyjby5的个人空间 - OSCHINA - 中文开源技术交流社区...

    这道题可以看为排列数的一个典型模块 一.算法实现题: 1.问题描述: 羽毛球队有男女运动员各n人,给定2个n×n矩阵P和Q.P[i][j]是男运动员i和女运动员j配对组成混合双打的男运动员竞赛优势:Q ...

  4. emc存储java打开后报错_连接EMC存储系统 - osc_mk8rqvg4的个人空间 - OSCHINA - 中文开源技术交流社区...

    1.准备一台笔记本电脑,一根网线即可. 2.将网线一头连接笔记本电脑,另一头连接存储.(连接存储的一头应连接到有扳手图标的那一网口上) 3.配置IP地址 IP:128.221.1.254 子网掩码:2 ...

  5. java绘制统计直方图取平均_统计学——直方图解析 - osc_lv8qb16y的个人空间 - OSCHINA - 中文开源技术交流社区...

    直方图(Histogram),又称质量分布图,是一种统计报告图, 由一系列高度不等的纵向条纹或线段表示数据分布的情况. 一般用 横轴表示数据类型,纵轴表示分布情况. 直方图是数值数据分布的精确图形表示 ...

  6. python遗传算法最短路径问题有几种类型_遗传算法求最短路径 - osc_tn8uhjgi的个人空间 - OSCHINA - 中文开源技术交流社区...

    实例描述 配送中心数为 $1$,客户数 $k$为 $8$,车辆总数 $m$为 $2$:车辆载重皆为 $8$ 吨:各客户点需求为 $g(i = 1, 2, ... , 8)$(单位为吨),已知客户点与配 ...

  7. lua 区间比较_自然区间匹配算法 - borey的个人空间 - OSCHINA - 中文开源技术交流社区...

    什么是自然区间? 每一个单位都可以顺序访问的区间就称之为自然区间. 什么是自然区间匹配? 很多时候需要验证一个值,这个值的粒度很小或者说是异构的(从另外的模块获取的).配置这个值是否正确,我们通常会设 ...

  8. python设计模式理解_如何理解设计模式 - PythonJsGo的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.设计模式是什么? 设计模式是软件设计中常见问题的典型解决方案. 它们就像能根据需求进行调整的预制蓝图,可用于解决代码中反复出现的设计问题.设计模式与方法或库的使用方式不同, 你很难直接在自己的程序 ...

  9. 关联规则可视化python语言_关联规则可视化 - 猪猪daxia的个人空间 - OSCHINA - 中文开源技术交流社区...

    关联规则挖掘是一种流行的数据挖掘方法,在R语言中为扩展包arules.然而,挖掘关联规则往往导致非常多的规则,使分析师需要通过查询所有的规则才能发现有趣的规则.通过手动筛选大量的规则集是费时费力.在本 ...

最新文章

  1. 利用django中间件CsrfViewMiddleware防止csrf攻击
  2. 关于linux命令的书,关于LINUX命令行(一)
  3. Activity-数据状态的保存
  4. 如何编写字符设备驱动
  5. Hibernate,JPA注解@Embeddable
  6. SQL2000和SQL2005和SQL2008同时安装问题
  7. Java 数组转字符串
  8. pandas读取csv文件数据并对数据分类使用matplotlib画出折线图
  9. java监控gc线程_Java应用性能监控系统,使用JMX实现,实现了类加载监控、内存监控、线程监控、GC监控...
  10. mysql 递归查询子类_MySQL递归查询当前节点及子节点
  11. 计算机考试spss数据分析,基于SPSS的数据分析
  12. matlab-画折线图
  13. IOS开发之——数据库-Couchbase(05)
  14. matlab中linspace函数用法
  15. HDU5745 La Vie en rose
  16. OpenCV - Universal intrinsics 统一指令集
  17. 阿里云SMS短信服务的使用
  18. XML报表打印出错,乱码问题
  19. IE浏览器打不开网页,其他浏览器却可以打开
  20. apt-get -y install中的-y是什么意思?

热门文章

  1. 世界人口钟实时数据_全球人口将达80亿 2019年世界人口总数统计数据
  2. python switch高效替代_python 中无switch(写了几个函数代替switch)
  3. oracle查询访问记录,[原创]Oracle Spatial新驱动的查询记录实例
  4. python数据写入csv不换行_你还在重复工作?Python轻松读写核对csv表格上万条数据!...
  5. 廖雪峰--python教程:笔记四-函数式编程
  6. 【EF学习笔记07】----------加载关联表的数据 贪婪加载
  7. 20140418--第1讲.开山篇
  8. IOS 自定义导航栏标题和返回按钮标题
  9. 如何将你的Qt项目打包安装在MeeGo系统中
  10. CVPR 2019 | 旷视提出极轻量级年龄估计模型C3AE