C语言怎么去重
时间: 2023-06-21 15:19:23 浏览: 118
C语言中去重有多种方法,其中一种简单的方法是使用双重循环遍历数组,对于每个元素,再遍历一遍数组,将与其相同的元素删除,只保留一个。以下是示例代码:
```c
int arr[] = {1, 2, 3, 2, 4, 3}; // 原始数组
int len = sizeof(arr) / sizeof(int); // 数组长度
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
if (arr[i] == arr[j]) {
// 将相同的元素删除
for (int k = j; k < len - 1; k++) {
arr[k] = arr[k + 1];
}
len--; // 数组长度减1
j--; // 因为删除了一个元素,所以要让j减1
}
}
}
// 输出去重后的数组
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
```
该方法的时间复杂度为O(n^2),不适用于大规模数据的去重。更高效的方法可以使用哈希表或者排序等算法。
相关问题
写一个 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++;
}
}
}
}
```
这个函数接受一个int类型数组和它的大小作为参数。它使用两个嵌套的循环来迭代数组,找到重复的元素并将它们删除。最后,函数返回一个不带重复元素的数组。
C语言去重处理。输入以下数据:1 5 2 4 5 6 5 2,去重后输出的结果为: 1 2 4 5 6
可以使用数组和循环来实现C语言的去重处理。
具体实现步骤如下:
1. 定义一个数组,用于存储输入的数据。
2. 通过循环将输入的数据存入数组中。
3. 定义一个新的数组,用于存储去重后的数据。
4. 使用循环遍历原数组,将不重复的数据存入新数组中。
5. 输出去重后的数组。
下面是一个示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int arr[MAX_SIZE]; // 存储输入的数据
int n; // 输入的数据个数
int i, j, k;
int flag; // 标记是否重复
int result[MAX_SIZE]; // 存储去重后的数据
printf("请输入数据个数:");
scanf("%d", &n);
printf("请输入%d个数据:", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
k = 0;
for (i = 0; i < n; i++) {
flag = 1;
for (j = 0; j < k; j++) {
if (arr[i] == result[j]) {
flag = 0;
break;
}
}
if (flag) {
result[k++] = arr[i];
}
}
printf("去重后的结果为:");
for (i = 0; i < k; i++) {
printf("%d ", result[i]);
}
printf("\n");
return 0;
}
```
输出结果为:`去重后的结果为:1 2 4 5 6`。