以下實現合併排序算法時出現了什麼問題。它只是返回undefined。在javascript中簡單實現合併排序
我懷疑錯誤是在合併函數的某處。
有人可以幫我指出錯誤。
function mergeSort(arr1, lower, higher) {
if (lower < higher) {
var mid = Math.floor((lower + higher)/2);
mergeSort(arr1, lower, mid);
mergeSort(arr1, mid + 1, higher);
merge(arr1, lower, mid, higher);
}
}
和合並功能
function merge(arr1, lower, mid, higher) {
var i = lower;
var j = mid + 1;
var k = 0;
var mergearr = [];
while (i < j && j <= higher) {
if (arr1[i] <= arr1[j]) {
mergearr[k] = arr1[i];
k++;
i++;
} else {
mergearr[k] = arr1[j];
k++;
j++;
}
}
if (i === j) {
while (j < higher) {
mergearr[k] = arr1[j];
k++;
j++;
}
} else if (j > higher) {
while (i < j) {
mergearr[k] = arr1[i];
k++;
i++;
}
}
for (var a = 0; a <= k; a++) {
console.log(a);
arr1[a] = mergearr[a];
console.log(arr1[a]);
}
return arr1;
}
這裏是控制檯
index: 0
value: 4
index: 1
value: 5
index: 2
value: 4
index: 3
value: undefined
index: 0
value: 4
index: 1
value: 4
index: 2
value: 5
index: 3
value: 4
index: 4
value: undefined
index: 0
value: undefined
index: 1
value: 4
index: 2
value: undefined
index: 3
value: undefined
index: 0
您不會''返回'mergeSort'函數中的任何內容。 – omerowitz