c语言去掉数组中重复的元素
时间: 2024-12-29 18:10:27 浏览: 9
在C语言中,要去除数组中的重复元素,可以采用一些数据结构和算法,比如使用哈希表(如`unordered_set`或`std::set`)或者排序后遍历数组并删除重复项。这里提供一个简单的示例,假设我们有一个整数数组,并使用`sorted_array`函数先对数组进行排序:
```c
#include <stdio.h>
#include <stdlib.h>
// 自定义函数用于比较两个整数
int compare(const void* a, const void* b) {
return (*(const int*)a - *(const int*)b);
}
void remove_duplicates(int arr[], int n) {
// 使用qsort对数组进行排序
qsort(arr, n, sizeof(int), compare);
// 创建一个集合来存储唯一元素
int unique_count = 0;
int unique[arr[n]];
for (int i = 0; i < n; i++) {
if (i == 0 || arr[i] != arr[i - 1]) {
unique[unique_count++] = arr[i];
}
}
// 新建一个去重后的数组,只保留唯一元素
int *new_arr = malloc(unique_count * sizeof(int));
for (int i = 0; i < unique_count; i++) {
new_arr[i] = unique[i];
}
printf("Sorted and de-duplicated array:\n");
for (int i = 0; i < unique_count; i++) {
printf("%d ", new_arr[i]);
}
printf("\n");
// 释放原始数组内存,然后将去重后的数组复制回去
free(arr);
arr = new_arr;
// 输出去重后的数组长度
printf("Length of the new array: %d\n", unique_count);
}
int main() {
int arr[] = {1, 5, 2, 6, 3, 7, 5, 2};
int n = sizeof(arr) / sizeof(arr[0]);
remove_duplicates(arr, n);
return 0;
}
```
运行这个程序,你会看到排序并去除重复元素后的结果以及新数组的长度。
阅读全文