c语言快速判断一个数组里重复值的个数
时间: 2024-01-24 13:05:35 浏览: 146
C语言查找数组里数字重复次数的方法
5星 · 资源好评率100%
在C语言中,可以使用计数排序来快速判断一个数组里重复值的个数。具体步骤如下:
1. 遍历数组,统计每个元素出现的次数。
2. 遍历计数数组,统计出现次数大于1的元素的个数,即为数组中重复值的个数。
以下是使用C语言实现的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int arr[] = {1, 2, 3, 1, 2, 4, 5, 3};
int n = sizeof(arr) / sizeof(arr[0]);
int max = arr[0]; // 找出数组中最大的元素
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
int* count = (int*)calloc(max + 1, sizeof(int)); // 计数数组
for (int i = 0; i < n; i++) {
count[arr[i]]++; // 更新元素出现次数
}
int cnt = 0; // 统计重复值的个数
for (int i = 0; i < max + 1; i++) {
if (count[i] > 1) { // 出现次数大于1
cnt++;
}
}
printf("重复值的个数为:%d\n", cnt); // 输出结果
free(count); // 释放计数数组的空间
return 0;
}
```
输出结果为:
```
重复值的个数为:3
```
以上代码中,使用了calloc函数来动态分配计数数组的空间,并使用free函数释放计数数组的空间。时间复杂度为O(n+k),其中k为数组中不同元素的个数,空间复杂度为O(k)。
阅读全文