一种方法是以空间换时间,可以定义一个数组 int count[MAX],并将其数组元素都初始化为0,然后执行for(int i=0; i<100; i++) count[A[i]]++操作,在count中找最大的数,即为重复次数最多的数。
代码如下:
#include <stdio.h>
//该函数的作用是获得数组中最大的数,并将该数首次出现的索引赋值给num保存
int getMaxNum(int* arr, int len, int &num)
{
int index = arr[0];
int i;
for(i=0; i<len; i++)
{
if(arr[i]>index)
{
index = arr[i];
num = i;
}
}
return index;
}
int main(void)
{
int array[] = {1, 1, 2, 2, 4, 4, 4, 4, 5, 5, 6, 6};
int length = sizeof(array)/sizeof(array[0]);
int i;
int num = 0;
int record = getMaxNum(array,length,num);
printf("record = %d\n", record);
int* count = new int[record];
for(i=0; i<length; i++)
count[i] = 0;
for(i=0; i<length; i++)
count[array[i]]++;
printf("重复得最多的数的次数是:%d\n", getMaxNum(count, record, num));
printf("重复得最多的数首次出现的序号是:%d\n", num);
return 0;
}
程序运行结果为:
record = 6
重复得最多的数的次数是:4
重复得最多的数首次出现的序号是:4