数组中相同数据的删除问题(一维数组、排序、循环)
时间: 2023-11-12 10:03:41 浏览: 62
删除一维数组中相同元素
好的,针对这个问题,我可以给你一种解决方案。
首先,我们可以对数组进行排序,这样相同数据就会被排在一起。然后,我们可以使用循环遍历数组,检查相邻的数据是否相同。如果相同,就将其中一个数据删除。删除数据后,我们需要将数组长度减1,并将后面的数据向前移动一个位置。
具体实现可以参考以下代码:
```c
void removeDuplicates(int arr[], int n)
{
// 对数组进行排序
qsort(arr, n, sizeof(int), compare);
// 循环遍历数组
int i = 0;
while (i < n - 1)
{
// 如果相邻的数据相同,就删除其中一个
if (arr[i] == arr[i + 1])
{
// 将后面的数据向前移动一个位置
for (int j = i + 1; j < n - 1; j++)
{
arr[j] = arr[j + 1];
}
// 将数组长度减1
n--;
}
else
{
// 如果相邻的数据不同,就继续往后遍历
i++;
}
}
}
int compare(const void *a, const void *b)
{
return (*(int*)a - *(int*)b);
}
```
在上面的代码中,我们使用了 C 语言中的 qsort 函数对数组进行排序,使用了 compare 函数作为排序的比较函数。然后,我们使用了一个循环来遍历数组,检查相邻的数据是否相同,并删除其中一个。最后,我们返回的是删除重复数据后的数组长度。
阅读全文