c语言数组去重(c数组去重复)
C语言数组去重
简介:
在C语言中,数组是一种常用的数据结构,用于存储一系列相同类型的元素。在实际应用中,我们有时需要对数组中重复的元素进行去重。本文将介绍如何使用C语言对数组进行去重的方法。
一、什么是数组去重
数组去重是指将数组中重复的元素,只保留一个,从而得到一个没有重复元素的数组。
二、数组去重的实现方法
1. 使用双重循环
一种常见的数组去重方法是使用双重循环。具体步骤如下:
(1)遍历数组中的每一个元素;
(2)对于当前元素,再次遍历数组中的所有元素,判断是否有与当前元素相同的元素;
(3)如果存在相同元素,则将当前元素删除;
(4)重复上述步骤,直到数组中所有重复元素都被删除。
2. 使用哈希表
另一种高效的数组去重方法是使用哈希表。具体步骤如下:
(1)创建一个空的哈希表;
(2)遍历数组中的每一个元素;
(3)将当前元素作为键,插入哈希表中;
(4)如果哈希表中已存在相同的键,则删除当前元素;
(5)重复上述步骤,直到数组中所有重复元素都被删除。
三、示例代码
下面是使用双重循环和哈希表两种方法的示例代码:
1. 使用双重循环的示例代码:
```c
#include
void removeDuplicates(int arr[], int n)
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (arr[i] == arr[j])
{
for (int k = j; k < n - 1; k++)
{
arr[k] = arr[k + 1];
}
n--;
j--;
}
}
}
int main()
int arr[] = {1, 2, 3, 4, 2, 1, 3};
int n = sizeof(arr) / sizeof(arr[0]);
removeDuplicates(arr, n);
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
return 0;
```
2. 使用哈希表的示例代码:
```c
#include
#include
#define MAX 100
#define HASH_SIZE 10
struct Node
int value;
bool exists;
};
void removeDuplicates(int arr[], int n)
struct Node hashTable[HASH_SIZE] = {{0, false}};
for (int i = 0; i < n; i++)
{
int key = arr[i] % HASH_SIZE;
if (hashTable[key].exists && hashTable[key].value == arr[i])
{
for (int j = i; j < n - 1; j++)
{
arr[j] = arr[j + 1];
}
n--;
i--;
}
else
{
hashTable[key].value = arr[i];
hashTable[key].exists = true;
}
}
int main()
int arr[] = {1, 2, 3, 4, 2, 1, 3};
int n = sizeof(arr) / sizeof(arr[0]);
removeDuplicates(arr, n);
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
return 0;
```
四、总结
本文介绍了使用C语言对数组进行去重的两种常用方法,即双重循环和哈希表。根据实际需求选择适合的方法可以提高数组去重的效率。希望本文对你了解C语言数组去重有所帮助。