合并和排序两个维持相对顺序的数组

时间:2018-01-10 04:12:54

标签: c++ arrays sorting

假设我有两个阵列A& B {1,2,1,2}{2,1,2,1}

我想以这样的方式对它们进行排序,即在合并和排序数组之后,它就像这样,

1,2,2,1,1,2,2,1

保持A和B的相对顺序!

这可以使用,     std::sort()
如果不是你建议采用哪种方法?

更多澄清,

让数组A的索引为1,2,3,4,B为-4,-3,-2,-1 现在我不能丢失数组A和数组B的索引顺序,而是将它们合并在一起,以使合并数组中连续元素的数量最小化,

另一个例子,
{3,4,4,5}{7,8,4,9,5}的排序方式为

{3,7,8,4,4,9,5,5}
我们可以看到这里连续相同元素的组数是

'3','7','8','4,4','9','5,5'

我尝试了一个解决方案而不是std::sort()。我声明了一个变量,它维护下一个插入位置,以便从数组BI循环到元素的每个数字,并搜索它是否存在于A中,并将其插入下一个“插入”位置。

1 个答案:

答案 0 :(得分:1)

这是您正在寻找的那种代码吗?

vector<int> a = {1,2,1,2};
vector<int> b = {2,1,2,1};
vector<int> result;
int i  = 0;
for (; i < min(a.size(),b.size()); i++){
    result.push_back(a[i]);
    result.push_back(b[i]);
}
if (i < a.size()) {
    result.push_back(a[i]);
} else if (i < b.size()){
    result.push_back(b[i]);
}