有两个有序数组,数组是排序的,但是中间有重复元素,比如 int array1[] = { -1, 1, 1, 2, 3, 4, 10, 10 };
int array2[] = { -1, 3, 5, 6, 7, 8, 8 };将这连个数组进行合并为一个数组。
//测试两个有序数组的合并 数组中有重复的元素
vector mergeArray(vector array1, vector array2)
{
vector result;
result.clear();
if (array1.size() == 0 && array2.size() == 0)
{
return result;
}
if (array1.size() == 0)
{
return array2;
}
if (array2.size() == 0)
{
return array1;
}
int index1 = 0;
int index2 = 0;
int length1 = array1.size();
int length2 = array2.size();
while (index1 < length1 && index2< length2)
{
if (index1>0 && array1.at(index1 - 1) == array1.at(index1))
{
index1++;
}
if (index2 >0 && array2.at(index2 - 1) == array2.at(index2))
{
index2++;
}
if (index1 < length1 && index2 < length2 && array1.at(index1) < array2.at(index2))
{
result.push_back(array1.at(index1));
index1++;
}
else if (index1 < length1 && index2 < length2 && array1.at(index1) == array2.at(index2))
{
result.push_back(array2.at(index2));
index2++;
index1++;
}
else
{
if (index2 < length2)
{
result.push_back(array2.at(index2));
index2++;
}
}
}
//如果一个数组遍历结束,则将剩余的元素添加到result中
while (index1 < length1)
{
if (result.back() != array1.at(index1))
{
result.push_back(array1.at(index1));
}
index1++;
}
while (index2 < length2)
{
if (result.back() != array2.at(index2))
{
result.push_back(array2.at(index2));
}
index2++;
}
return result;
}
结果为