我正在努力解决这个问题,合并两个排序数组(或在这个特定情况下的向量)。当将向量元素记录到控制台时,我得到了非常奇怪的输出。我的理想输出将是所有按顺序排列的数字。
代码如下:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec1 = {0, 3, 4, 31};
vector<int> vec2 = {4, 6, 30};
vector<int>::iterator it1 = vec1.begin();
auto it2 = vec2.begin();
bool keep_going = true;
for ( ; it2 != vec2.end(); it2++) {
for ( ; it1 != vec1.end() && keep_going; it1++) {
if (*it1 < *it2) {
vec1.insert(it1, *it2);
keep_going = false;
}
}
keep_going = true;
}
for (int i = 0; i < vec1.size(); i++) {
cout << vec1[i] << endl;
}
return 0;
}
以下是控制台的说明:
49
0
4
0
3
4
31
free(): invalid pointer
exited, aborted
假设您有不使用std::合并
的原因,它可以手工完成,前提是:
合并操作可以编码为:
while(it2 != vec2.end()) { // loop while smth to insert
while((it1 != vec1.end()) && (*it1 <= *it2)) it1++; // search in vec1 where to insert
int i = it1 - vec1.begin(); // store the position
vec1.insert(it1, *it2++); // insert the value
it1 = vec1.begin() + i + 1; // and restore the iterator
}
我正在学习如何在c中实现Mergesort,遇到了以下问题。 这是我的合并函数,它将两个排序数组合并为一个排序数组。 在任何时候,我都使用代码A或代码B。当我使用代码A时,函数按预期执行。然而,当我使用CODE B时,函数会用随机数据填充数组列表。 printArray是一个自定义函数,用于打印数组、列表。当对一组数字{4,2,6,9}进行排序时,我从printArray函数中得到以下输出:
如果在这个程序中,我正在输入一个大小7.so的数组从main()merge_sort(arr,0,6)被传递到相应的函数后,条件被检查,如果(0 但我能够理解合并排序(arr,mid1,high);有人打电话吗?但这个程序运行良好。请解释编译器如何调用merge_sort(arr、mid 1、high)
本文向大家介绍Objective-C语言排序数组,包括了Objective-C语言排序数组的使用技巧和注意事项,需要的朋友参考一下 示例
我的任务是用C#为二维数组创建合并排序算法。数组看起来像这样 我需要从文件中取数组并按x的升序对行进行排序,同时程序要检查是否有相同x值同时不同Y值的坐标对,当数组排序后,程序要将其写入文件中。我已经为一维数组创建了算法,但是不懂如何为二维数组重写算法,这是我的代码,请帮助我
我应该编写一个函数来合并(将一个放在另一个的末尾)两个单独链接的列表。用户向控制台输入一系列数字,例如:1 2 3 4 0(0表示输入结束,不是列表中的元素)。这些数字被放入链表中,链表现在看起来是这样的:1 2 3 4。这个过程再次重复,直到我们有两个不同的链表。然后,合并函数被称为“void merge(结构节点头1,结构节点头2)”。打印新列表后,程序结束。 我的想法是首先将指针指向第一个列
我正在玩排序数组,我弄清楚了如何对int数组进行合并排序。但是我不知道合并字符串数组。在正常排序时,对字符串数组进行排序很容易,但合并排序不同。我到目前为止所做的代码如下,正在处理int数组。