C++数组如何“删除”重复元素
算法思路:首先我们要把数组中的第一个元素(其次是第二个元素开始比较,第三个元素开始比较......)与后面的每一个数进行比较(两层循环,第一层循环决定开始比较的数,第二层循环决定这个数和后面每个数进行比较),然后如果在比较的过程中两个数相等,就把这两个相同数的后一个数依次往前挪(第三层循环),然后再拿开始那个数和后面的那些数继续比较,如果相同,执行第三层循环。直到第一个数与所有数比较完成,第一层循环的第一遍循环执行完毕,然后开始执行第二遍、第三遍......直到第一层循环执行完毕。
代码展示:
#include
using namespace std;
#define N 6
void test() {
int num[N] = { 1,2,2,3,2,5 };
int n = N;
for (int i = 0; i < n - 1; i++) { //第一层循环
for (int j = i + 1; j < n - 1; j++) { //第二层循环
if (num[i] == num[j]) {
for (int x = j; x < n - 1; x++) { //第三层循环
num[x] = num[x + 1];
}
n--; //总数 -1
j--; //这里j需要 -1:二层循环哪里有一个j++,如果不 -1,就会导致比较的时候是和原来数组的第j位进行比较,就漏了一个数
}
}
}
for (int i = 0; i < n; i++) {
cout << num[i] << "\t";
}
cout << endl << endl;
}
int main() {
test();
system("pause");
return 0;
}