题目要求:
我的算法思想:以空间换时间,设置计数数组
具体实现:
#include<stdio.h>
#include<stdlib.h>
#define DataType int
DataType* A;
//找到序列中的主元素
int Find_Main_Elem(DataType A[],int n)
{
int t[n]={0};
for(int i=0;i<n;i++)t[A[i]]++;
for(int i=0;i<n;i++)if(t[i]>(n/2))return i;
return -1;
}
int main()
{
int n;
printf("输入数组的长度:\n");
scanf("%d",&n);
A=(DataType*)malloc(sizeof(DataType)*n);
printf("输入序列:\n");
for(int i=0;i<n;i++)scanf("%d",&A[i]);
int m=Find_Main_Elem(A,n); //负责寻找主元素的算法
if(m!=-1)printf("主元素为: \n%d\n",m);
else printf("主元素不存在!\n");
return 0;
}