输入一组无序的整数编程输出,其中出现次数最多的整数及其出现次数
时间: 2024-10-08 13:14:09 浏览: 58
一个未排序的整数数组,请找出其中没有出现的最小的正整数。
5星 · 资源好评率100%
要编写一个程序来找出无序整数数组中出现次数最多的数字及其出现次数,你可以使用哈希表(也叫散列表)来跟踪每个数字出现的频率。以下是一个简单的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define ARRAY_SIZE 100
typedef struct {
int number;
int frequency;
} CountPair;
void findMostFrequent(int arr[], int n, CountPair *result) {
// 创建一个大小为数组长度的哈希表(假设所有整数都在范围内的情况下)
CountPair count[ARRAY_SIZE] = {0};
for (int i = 0; i < n; i++) {
// 如果元素已经在哈希表中,则增加计数
if (count[arr[i]].number != 0)
count[arr[i]].frequency++;
// 否则,在该位置插入新元素并设置计数为1
else
count[arr[i]].number = arr[i];
}
// 初始化最大频率和结果变量
int maxFrequency = 0, maxIndex = -1;
for (int i = 0; i < ARRAY_SIZE; i++) {
if (count[i].frequency > maxFrequency) {
maxFrequency = count[i].frequency;
maxIndex = i;
}
}
result->number = maxIndex;
result->frequency = maxFrequency;
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 2, 2, 3, 3, 3};
int n = sizeof(arr) / sizeof(arr[0]);
CountPair mostFrequent;
findMostFrequent(arr, n, &mostFrequent);
printf("The most frequent number is %d and it appears %d times.\n", mostFrequent.number, mostFrequent.frequency);
return 0;
}
```
在这个程序中,`findMostFrequent` 函数遍历数组,用一个结构体数组 `count` 存储每个元素及其出现次数。然后找到出现次数最多的元素并将其存储在 `result` 中。
运行这个程序后,它将输出给定数组中出现次数最多的整数以及其出现次数。
阅读全文