假设我有两个阵列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中,并将其插入下一个“插入”位置。
答案 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]);
}