给定一个排好序的数组,去除数组中重复的元素,保证每个元素只出现一次例如 1,1,2返回1,2 输入输出格式 printf("Please input the arraysize\n"); scanf("%d"); for() { printf("Please input the %d-th number\n"); scanf("%d"); } printf("values are %d\n"); for () { print
时间: 2024-03-10 10:49:25 浏览: 19
您的问题是让我用代码实现去除排好序数组中的重复元素并输出结果,是吗?如果是的话,以下是一个简单的实现:
```c
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int arr[MAX_SIZE], n, i, j;
printf("Please input the array size: ");
scanf("%d", &n);
for(i=0; i<n; i++) {
printf("Please input the %d-th number: ", i+1);
scanf("%d", &arr[i]);
}
//去重
for(i=0; i<n; i++) {
for(j=i+1; j<n;) {
if(arr[j] == arr[i]) {
//如果有重复元素,将后面的元素往前移一位
for(int k=j; k<n; k++) {
arr[k] = arr[k+1];
}
n--; //数组长度减1
} else {
j++; //没有重复元素,j往后移一位
}
}
}
//输出去重后的数组
printf("Values are: ");
for(i=0; i<n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
这段代码中,我们首先通过输入获取数组的大小和元素,然后使用双重循环遍历数组,如果有重复元素就将后面的元素往前移一位,最后输出去重后的数组。
注意,这个实现的时间复杂度为O(n^2),如果数组很大时可能会比较慢,可以使用其他更高效的去重算法,比如哈希表或双指针法。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)