c语言实现一组重复有序数,去掉重复的仅留一个
时间: 2024-09-12 18:09:28 浏览: 37
用python实现英文字母和相应序数转换的方法
在C语言中,如果你想从一组重复的有序数中保留唯一的一个元素,你可以使用一种叫做“双指针”的技术,结合循环结构。这里我们可以创建两个指针,一个普通指针i用于遍历数组,另一个特殊指针j初始设为0。当发现重复数字时,我们只需要跳过它,直到找到下一个不同的元素,然后将i指向的那个元素复制到新位置(数组[j]的位置),并同时更新j。
以下是一个简单的示例代码片段:
```c
#include <stdio.h>
void removeDuplicates(int arr[], int n) {
if (n == 0 || n == 1) return; // 如果数组为空或只有一个元素,无需处理
int j = 0; // 特殊指针,用于记录非重复元素的下标
for (int i = 1; i < n; i++) { // 遍历数组
if (arr[i] != arr[i - 1]) { // 检查当前元素是否与前一个不同
arr[j++] = arr[i]; // 不同则移动到新位置,并更新j
}
}
arr[j] = 0; // 结束后在新位置加个结束标志,通常我们会将最后一个有效元素后的值置为0
}
// 测试函数
int main() {
int arr[] = {1, 2, 3, 4, 4, 5, 6, 6, 7};
int n = sizeof(arr) / sizeof(arr[0]);
removeDuplicates(arr, n);
printf("Non-duplicate sorted array: ");
for (int i = 0; arr[i] != 0; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
运行这个程序,你会得到非重复的排序数组:1 2 3 4 5 6 7。
阅读全文