码迷,mamicode.com
首页 > 其他好文 > 详细

C程序设计的抽象思维-算法分析-大多数元素

时间:2014-07-30 20:57:24      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:算法

【问题】

请编写以下函数 int MajorityElement(int array[],int n);

该函数返回数组array中的多数元素。多数元素是指在占绝对多数(至少51%)的一个值。如果多数元素不存在,那么返回常量NoMajorityElement,该函数必须满足下面的条件:
 1. 必须以O(N)时间运行。
 2. 必须使用O(1)的附加空间。换句话说,可用个别的临时变量,而不可以使用任何的临时数组。并且不能使用递归解决,这是因为随着递归层数加深,会需要空间来存储栈帧。

 3. 不能改变数组中的任何元素的值。

【代码】

#include <stdio.h>

void MajorityElement(int array[], int n)
{
	int majority, i, count;
	majority = array[0];
	count = 1;
	for(i = 1; i < n; i++){
		if(majority != array[i]){
			if(count == 0){
				majority = array[i];
				count++;
			}else{
				count--;
			}
		}else{
			count++;
		}
	}
	if(count > 0)
		printf("MajorityElement: %d\n", majority);
	else
		printf("NoMajorityElement\n");

}

main()
{
	int array[5] = {1, 2, 1, 2, 3};
	MajorityElement(array, 5);
}


C程序设计的抽象思维-算法分析-大多数元素,布布扣,bubuko.com

C程序设计的抽象思维-算法分析-大多数元素

标签:算法

原文地址:http://blog.csdn.net/jjjcainiao/article/details/26173481

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!