为什么合并打印的顺序相反

时间:2019-07-29 15:28:37

标签: sorting mergesort divide-and-conquer

因此,我正在学习合并排序算法。我很惊讶地看到合并以相反的顺序打印。您可以看到我在每个步骤中都在打印合并向量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'

1 个答案:

答案 0 :(得分:1)

您可以在每个步骤的开始处打印目标向量fwrite(transpose(mat)) 。目标向量的内容和顺序取决于您使用的实现合并排序算法的方式,即,如何分割原始向量,如何调用v函数以及源向量的原始内容是什么。如果要跟踪合并排序算法的行为,则应在合并操作之后打印矢量。

还请注意:

  • 索引变量mergeijkl的类型应为r
  • 函数末尾的size_t语句无用。