如果只加载iostream,c++如何进行数组去重
时间: 2024-10-14 16:11:44 浏览: 34
C++ 字符串去重排序实例代码
5星 · 资源好评率100%
在C++中,如果只加载iostream库进行数组去重,可以通过以下几种方法实现:
1. **手动遍历法**:通过嵌套循环来遍历数组,将每个元素与其他所有元素进行比较,如果发现重复则跳过。这种方法的时间复杂度较高,为O(n^2)。
```cpp
#include <iostream>
using namespace std;
void removeDuplicates(int arr[], int &n) {
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (arr[i] == arr[j]) {
for (int k = j; k < n - 1; k++) {
arr[k] = arr[k + 1];
}
n--;
j--;
}
}
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 1, 2, 3};
int n = sizeof(arr) / sizeof(arr[0]);
removeDuplicates(arr, n);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
```
2. **排序后删除法**:首先对数组进行排序,然后遍历数组删除相邻的重复元素。这种方法需要先对数组进行排序,时间复杂度取决于排序算法。
```cpp
#include <iostream>
#include <algorithm> // 使用sort函数
using namespace std;
void removeDuplicates(int arr[], int &n) {
sort(arr, arr + n);
for (int i = 1; i < n; ) {
if (arr[i] == arr[i - 1]) {
for (int j = i; j < n - 1; j++) {
arr[j] = arr[j + 1];
}
n--;
} else {
i++;
}
}
}
int main() {
int arr[] = {4, 3, 2, 1, 5, 1, 2, 3};
int n = sizeof(arr) / sizeof(arr[0]);
removeDuplicates(arr, n);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
```
3. **利用集合数据结构**:虽然题目要求不使用额外库,但在实际开发中,可以使用标准模板库(STL)中的`set`或`unordered_set`来快速去重。不过这需要包含相应的头文件。
阅读全文