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

Merge and Sort two arrays maintaining relative order

本文关键字:数组 相对 顺序 两个 排序 合并      更新时间:2023-10-16

假设我有两个数组 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-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().我声明了一个保持下一个插入位置的变量,因此对于数组 B 中的每个数字,我遍历元素并搜索它是否存在于 A 中并将其插入下一个"插入"位置。

这是您要查找的代码类型吗?

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]);
}