找出出现次数超过数组一半元素的数
2016-03-26 11:04
330 查看
开始时k存储数组中的第一个数,j为0,如果数组出现的数于k相等,则j加1,否则就减1,如果j为0,就把当前数组中的数赋给k
因为指定的数出现的次数大于数组长度的一半,所有j++与j–相抵消之后,最后j的值是大于等于1的,k中存的那个数就是出现最多的那个数。
因为指定的数出现的次数大于数组长度的一半,所有j++与j–相抵消之后,最后j的值是大于等于1的,k中存的那个数就是出现最多的那个数。
下面这个算法只适合数组中数组中某个数的出现次数超过数组长度一半的数组
int Search(int A[],int len) { if(NULL==A || len<=0) { return-1; } int k, j=0; for(int i=0;i<len;++i) { if(j==0) { k=A[i]; } if(k==A[i]) { ++j; }else { --j; } } return k; }
相关文章推荐
- 转载http://www.yinwang.org/blog-cn/2013/03/07/linux-windows-mac
- 提高情商的方法
- 系统负载很高但cpu很空闲
- String、StringBuffer和StringBuilder使用和区别
- linux源码Makefile的详细分析
- iOS开发 - 卡片堆叠效果
- MotionEvent中getX()和getRawX()的区别
- 【USACO题库】2.4.3 Cow Tours牛的旅行
- 将备份中的数据插入到数据库中的具体步骤
- 二代CMS旅游网站系统V1使用手册(二):同业账户及获取授权
- 构建之法阅读笔记02
- Orchard源码分析(2):Orchard.Web.MvcApplication类(Global)
- horizontalscrollview+textview简单版
- 决策树
- Codeforces 652 B. z-sort
- Activity does not have a parent activity name specified.
- sizeof函数求数组长度
- Android仿IOS回弹效果 ScrollView回弹 总结
- 重用cell的两种方法
- Http协议中Cookie详细介绍