###### C/C++ 统计两个数组中不同元素的个数

C/C++ 统计两个数组中不同元素的个数

//统计两个数组中不同元素的个数

//数组中不含重复元素
#include "stdafx.h"
#include "stdio.h"
#include"stdlib.h"
#include<iostream>

using namespace std;

int Match2Array(int * pArray1, int len1, int * pArray2, int len2)
{
for (int i = 0; i < len1-1; i++)
{
for (int j = 0; j < len1-i-1; j++)
{
if (pArray1[j]>pArray1[j + 1])
{
int temp = pArray1[j];
pArray1[j] = pArray1[j + 1];
pArray1[j + 1] = temp;
}
}
}
for (int i = 0; i < len2 - 1; i++)
{
for (int j = 0; j < len2 - i - 1; j++)
{
if (pArray2[j]>pArray2[j + 1])
{
int temp = pArray2[j];
pArray2[j] = pArray2[j + 1];
pArray2[j + 1] = temp;
}
}
}
//至此，两个数组都变成了有序数组，从小到大排列
int *p1 = pArray1 + len1;
int *p2 = pArray2 + len2;
int num = 0;//相同元素的个数

while (pArray1 < p1&&pArray2 < p2)
{
if (*pArray1 == *pArray2)
{
num++;
pArray1++;
pArray2++;
}
else if (*pArray1 < *pArray2)
{
pArray1++;
continue;
}
else
{
pArray2++;
continue;
}
}
return len1 + len2 - 2 * num;

}
int main()
{
int f[4] = { 1, 3, 4, 7 };
int g[5] = { 2, 3, 5, 7, 8 };
int size=Match2Array(f, 4, g, 5);

cout << size << endl;

return 0;
}

//只含一个重复元素时
#include "stdafx.h"
#include "stdio.h"
#include"stdlib.h"
#include<iostream>

using namespace std;

//统计数组中相同元素的个数
int *reNum(int *p, int size)
{
int arr[10] = { 0 };

for (int i = 0; i < size;i++)
{
arr[p[i]]++;
}
return arr;
}
int Match2Array(int * pArray1, int len1, int * pArray2, int len2)
{
for (int i = 0; i < len1 - 1; i++)
{
for (int j = 0; j < len1 - i - 1; j++)
{
if (pArray1[j]>pArray1[j + 1])
{
int temp = pArray1[j];
pArray1[j] = pArray1[j + 1];
pArray1[j + 1] = temp;
}
}
}
for (int i = 0; i < len2 - 1; i++)
{
for (int j = 0; j < len2 - i - 1; j++)
{
if (pArray2[j]>pArray2[j + 1])
{
int temp = pArray2[j];
pArray2[j] = pArray2[j + 1];
pArray2[j + 1] = temp;
}
}
}
int *b, *c;
b = reNum(pArray1, len1);
c = reNum(pArray2, len2);
//至此，两个数组都变成了有序数组，从小到大排列
int *p1 = pArray1 + len1;
int *p2 = pArray2 + len2;
int num = 0;//相同元素的个数
int f;
while (pArray1 < p1&&pArray2 < p2)
{
if (*pArray1 == *pArray2)
{
num++;
f = *pArray1;
pArray1++;
pArray2++;
}
else if (*pArray1 < *pArray2)
{
pArray1++;
continue;
}
else
{
pArray2++;
continue;
}
}

num = num+b[f]+c[f];

return len1 + len2 - num;

}
int main()
{
int f[5] = { 1, 3, 3, 4, 7 };
int g[6] = { 2, 3, 5, 9, 8 ,6 };
int size=Match2Array(f, 5, g, 6);
/*int f[3] = { 1, 3, 3};
int g[3] = { 2, 3, 5 };
int size = Match2Array(f, 3, g, 3);*/
cout << size << endl;

return 0;
}


//数组中包含多个重复元素
#include "stdafx.h"
#include "stdio.h"
#include"stdlib.h"
#include<iostream>

using namespace std;

//统计数组中相同元素的个数
int *reNum(int *p, int size)
{
int arr[10] = { 0 };

for (int i = 0; i < size;i++)
{
arr[p[i]]++;
}
return arr;
}
int Match2Array(int * pArray1, int len1, int * pArray2, int len2)
{
for (int i = 0; i < len1 - 1; i++)
{
for (int j = 0; j < len1 - i - 1; j++)
{
if (pArray1[j]>pArray1[j + 1])
{
int temp = pArray1[j];
pArray1[j] = pArray1[j + 1];
pArray1[j + 1] = temp;
}
}
}
for (int i = 0; i < len2 - 1; i++)
{
for (int j = 0; j < len2 - i - 1; j++)
{
if (pArray2[j]>pArray2[j + 1])
{
int temp = pArray2[j];
pArray2[j] = pArray2[j + 1];
pArray2[j + 1] = temp;
}
}
}
int *b, *c;
b = reNum(pArray1, len1);
c = reNum(pArray2, len2);
//至此，两个数组都变成了有序数组，从小到大排列
int *p1 = pArray1 + len1;
int *p2 = pArray2 + len2;
int num = 0;//相同元素的个数
int k=0,f[10] = { 0 };

while (pArray1 < p1&&pArray2 < p2)
{
if (*pArray1 == *pArray2)
{
num++;
f[k++] = *pArray1;
pArray1++;
pArray2++;
}
else if (*pArray1 < *pArray2)
{
pArray1++;
continue;
}
else
{
pArray2++;
continue;
}
}
for (int kk = 0; kk < sizeof(f) / sizeof(f[0]); kk++)
{
num = num + b[f[kk]] + c[f[kk]];
}

return len1 + len2 - num;

}
int main()
{
int f[5] = { 1, 3, 3, 7, 7 };
int g[6] = { 2, 3, 5, 7, 8 ,6 };
int size=Match2Array(f, 5, g, 6);
/*int f[3] = { 1, 3, 3};
int g[3] = { 2, 3, 5 };
int size = Match2Array(f, 3, g, 3);*/
cout << size << endl;

return 0;
}


int arr[10] = { 0 };

duan19920101

• 擅长领域：
• 自动驾驶
• 图像处理
• 深度学习
• 机器学习
• OpenCV

#### C/C++统计数组中不同数值的个数和概率

2017-01-17 15:18:32

#### 如何获取c++ Array元素个数

2017-02-07 14:53:35

#### 找出两个有序数组中相同的元素

2016-01-07 22:05:44

#### 学习算法（3）——查找2个数组中的相同元素

2017-03-14 23:30:25

#### 【查找】找出两个数组共同拥有的元素

2015-01-14 16:58:28

#### 面试题：统计一个数组中不重复出现的元素个数

2015-03-04 11:01:02

#### 统计一个数组中多少重复的元素

2017-09-30 14:15:42

#### 统计int数组中重复数字的个数

2016-09-06 22:30:52

#### 实现统计数组中相同元素个数并输出

2007-08-28 20:08:00

#### 计算一个数组中相同元素对的数目

2017-02-10 14:42:32

## 不良信息举报

C/C++ 统计两个数组中不同元素的个数