c语言数组去重

admin 36 0

C语言数组去重的实现方法

在C语言中,数组是一种常见的数据结构,它允许我们在连续的内存空间中存储相同类型的数据,有时候我们可能会在数组中遇到重复的元素,这可能会导致一些问题,如果我们想要对数组进行排序或者进行某些统计操作,那么重复的元素就会干扰我们的结果,去除数组中的重复元素是非常重要的。

下面是一种简单的C语言实现数组去重的方法,这个方法使用了一个新的数组,将原始数组中的非重复元素复制到新的数组中。

```c

#include

void removeDuplicates(int arr[], int *length) {

int i, j, k;

for (i = 0; i < *length; i++) {

for (j = i + 1; j < *length;) {

if (arr[j] == arr[i]) {

for (k = j; k < *length; k++) {

arr[k] = arr[k + 1];

}

(*length)--;

} else {

j++;

}

}

}

}

int main() {

int arr[] = {1, 2, 2, 3, 4, 4, 4, 5};

int length = sizeof(arr) / sizeof(arr[0]);

removeDuplicates(arr, &length);

int i;

for (i = 0; i < length; i++) {

printf("%d ", arr[i]);

printf("\n");

return 0;

```

在这个代码中,我们定义了一个`removeDuplicates`函数,它接受一个整型数组和一个指向数组长度的指针作为参数,这个函数首先遍历整个数组,然后对于每个元素,它都会从数组的后面开始查找与该元素相同的元素,如果找到了相同的元素,那么就将该元素前面的所有元素向后移动一位,并将数组的长度减一,我们就可以保证在数组中不会有重复的元素了。

在`main`函数中,我们首先定义了一个包含重复元素的数组,然后计算了数组的长度,我们调用`removeDuplicates`函数来去除数组中的重复元素,我们遍历新的数组并打印出每个元素。

这个代码的优点是简单易懂,容易实现,但是它的缺点是时间复杂度较高,为O(n^2),其中n是数组的长度,如果数组很大,那么这个算法可能会非常慢,如果需要处理大型数组的话,我们需要寻找更高效的算法。