找主元素
2016-09-04 14:58
155 查看
/* 找出出现超过一半的数 思路: 两个两个的比较,相等,放新数组里,不相等,不处理 最后留下一个,肯定是,没留下,没符合条件的数 原理: 出现超过一半的,在新数组里还是符合
正确性:
比如,有十个元素,majority出现6次,其他四次,假如比较时,majority和另一个比较的,都减掉,majority有5个,其他有4个,还是满足;对比的俩均不是majority,均删掉,更满足了;对于加入新数组的元素,均为连着出现过的,但其他连着出现过的情形肯定不如majority多,要不就不存在majority了 */ #include <stdio.h> #include <stdlib.h> #define MAXN 11 int findmajority(int array[],int n) { if(n==0){ printf("no exist the majority number\n"); return; } if(n==1){ printf("%d",array[1]); return; } else{ int top=0; for(int i=1;i<=n;i+=2){ if(array[i]==array[i+1]) array[++top]=array[i]; } if(n%2==1)//处理有奇数个数字的情况 if(array[n-1]==array ) array[++top]=array ; return findmajority(array,top); } } int main() { int array[MAXN]; for(int i=1;i<MAXN;i++) scanf("%d",&array[i]); findmajority(array,MAXN-1); return 0; } //另一思路:如果一定存在,排序,中间位置的就是
相关文章推荐
- Visitor 表示一个作用于某个对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作
- 写一个函数求一个整数数组中第二大元素
- 找出数组里面元素出现次数最多的问题
- HTML CSS列表元素ul,ol,dl的研究与应用
- O(n)选出第k小元素
- SetUniqueList生成不重复元素的List的用法和结果
- 行内元素和块级元素的区别
- 对List元素的多个属性字段进行不同的排序
- css中伪类和伪元素的区别
- javascript为数组去掉重复元素
- 自动化测试之定位元素的多种方式
- 取得input元素中部分选中(selected)的值
- jquery 学习笔记——选择元素
- SVG主要元素和属性
- 【Web】<template>不解析不渲染,可包含任意元素,可在任意元素之中
- STL中的set---可以直接修改set中的元素么?
- bootstrap 基本页面元素,代码,列表
- Spark map 遍历rdd中的每个元素
- 将两张单链表合并并且去除重复元素
- 寻找数组中的缺失元素