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语言数组去重有所帮助。

标签列表