查找数组中的重复元素。用c语言表示
时间: 2023-06-13 18:02:49 浏览: 68
可以使用哈希表来实现查找数组中的重复元素。具体实现代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
void find_duplicates(int arr[], int n) {
int hash[MAX_SIZE] = {0}; // 初始化哈希表
for (int i = 0; i < n; i++) {
if (hash[arr[i]] == 1) { // 如果该元素已经出现过,则打印其值
printf("%d ", arr[i]);
} else {
hash[arr[i]] = 1; // 否则将其标记为已出现
}
}
}
int main() {
int arr[] = {1, 2, 3, 4, 1, 2, 5, 6, 7, 3};
int n = sizeof(arr) / sizeof(arr[0]);
printf("The duplicates in the array are: ");
find_duplicates(arr, n);
return 0;
}
```
输出结果为:
```
The duplicates in the array are: 1 2 3
```
相关问题
c语言统计数组中重复元素和重复次数
在C语言中,统计数组中重复元素和重复次数可以采用两种方法:暴力查找和哈希表查找。
暴力查找方法是遍历整个数组,对每个元素都进行一次遍历,判断该元素是否与数组中其它元素重复。如果重复,则将一个计数器加一,表示重复次数。该方法效率较低,时间复杂度为O(n²),当数组元素过多时,效率会极低。
哈希表查找方法是使用哈希表数据结构来实现。首先建立一个哈希表,将数组中的每个元素存入哈希表,同时记录每个元素在哈希表中出现的次数。如此便可以快速查找到数组中的所有重复元素及其出现次数。该方法相较于暴力查找方法,时间复杂度优化到O(n),效率更高。
以下是使用哈希表查找实现的代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
int main()
{
int arr[SIZE], count[SIZE], i, j, k;
int len = sizeof(arr) / sizeof(arr[0]);
// 随机生成len个1~100的整数
srand((unsigned)time(NULL));
for (i = 0; i < len; i++) {
arr[i] = rand() % 100 + 1;
}
// 初始化count数组为0
for (i = 0; i < SIZE; i++) {
count[i] = 0;
}
// 哈希表查找
for (i = 0; i < len; i++) {
count[arr[i]]++;
}
for (j = 0; j < SIZE; j++) {
if (count[j] > 1) {
printf("数字 %d 重复 %d 次\n", j, count[j]);
}
}
return 0;
}
```
用c语言写一个除去数组中重复元素的函数
以下是用C语言编写一个能够除去数组中重复元素的函数:
```c
void removeDuplicates(int arr[], int n) {
int i, j, k;
for(i = 0; i < n; i++) {
for(j = i + 1; j < n;) {
if(arr[j] == arr[i]) {
for(k = j; k < n; k++) {
arr[k] = arr[k + 1];
}
n--;
}
else {
j++;
}
}
}
}
```
该函数接受一个整数数组和数组的长度作为参数。算法基于双重循环,其中外层循环遍历数组中的每个元素,而内层循环用于查找重复元素并将其删除。如果内层循环找到重复的元素,则将其向左平移一位,并递减数组长度。这样可以确保任何重复的元素均已删除。
您可以通过将此函数与您的主程序结合使用来测试它。例如,您可以使用以下代码:
```c
int main() {
int arr[] = {1, 2, 2, 3, 4, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
removeDuplicates(arr, n);
for(int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
输出将是:
```
1 2 3 4 5
```
这显示了在我们的原始数组中除去重复元素的结果。位于输出中的数字表示每个唯一的数字。