因此,我正在学习合并排序算法。我很惊讶地看到合并以相反的顺序打印。您可以看到我在每个步骤中都在打印合并向量void merge(vector<int> &left, vector<int> &right, vector<int> &v) {
cout << "merged vector is : \n";
for (auto x : v)
cout << x << " ";
cout << endl;
int l = left.size();
int r = right.size();
int i = 0, j = 0, k = 0;
while (i < l && j < r) {
if (left[i] <= right[j]) {
v[k] = left[i];
i++;
} else {
v[k] = right[j];
j++;
}
k++;
}
while (i < l) {
v[k++] = left[i++];
}
while (j < r) {
v[k++] = right[j++];
}
return;
}
,但我不明白为什么这样做的顺序相反。最后的答案,如果一切都很好。
typeof InstallTrigger !== 'undefined'
答案 0 :(得分:1)
您可以在每个步骤的开始处打印目标向量fwrite(transpose(mat))
。目标向量的内容和顺序取决于您使用的实现合并排序算法的方式,即,如何分割原始向量,如何调用v
函数以及源向量的原始内容是什么。如果要跟踪合并排序算法的行为,则应在合并操作之后打印矢量。
还请注意:
merge
,i
,j
,k
和l
的类型应为r
。size_t
语句无用。