我试图理解合并排序算法的工作原理,我有一些问题,我不知道在执行两个创建的数组排序操作时所有数据成员的存储位置?
答案 0 :(得分:0)
我现在已经理解Merge sort不会创建新数组,它只是创建逻辑数组并执行原始数组上的所有操作,本文将清除您关于merge sort c++的概念
答案 1 :(得分:0)
请参阅以下链接了解您的解决方案。
http://www.algolist.net/Algorithms/Merge/Sorted_arrays
// size of C array must be equal or greater than
// sum of A and B arrays' sizes
public void merge(int[] A, int[] B, int[] C) {
int i, j, k, m, n;
i = 0;
j = 0;
k = 0;
m = A.length;
n = B.length;
while (i < m && j < n) {
if (A[i] <= B[j]) {
C[k] = A[i];
i++;
} else {
C[k] = B[j];
j++;
}
k++;
}
if (i < m) {
for (int p = i; p < m; p++) {
C[k] = A[p];
k++;
}
} else {
for (int p = j; p < n; p++) {
C[k] = B[p];
k++;
}
}
}