Hier ist der Code, den ich schrieb:MergeSort Algorithmus und Speicherproblem in JavaScript
function mergeSort(array){
if(array.length < 2) return array;
var mid = Math.floor(array.length/2);
var left = array.slice(0, mid);
var right = array.slice(mid, array.length);
return merge(mergeSort(left), mergeSort(right));
}
function merge(left, right){
var result = [];
while (left.length && right.length){
if(left[0]>right[0]){
result.push(right[0]);
} else {
result.push(left[0]);
}
}
while(left.length){
result.push(left[0]);
}
while(right.length){
result.push(right[0]);
}
return result;
}
array = [1000, -94, -115, 300, 22]
mergeSort(array);
und unten ist eine andere Lösung i
function mergeSort (arr) {
if (arr.length < 2) return arr;
var mid = Math.floor(arr.length /2);
return merge(mergeSort(arr.slice(0,mid)), mergeSort(arr.slice(mid)));
}
function merge (a,b) {
var result = [];
while (a.length >0 && b.length >0)
result.push(a[0] < b[0]? a.shift() : b.shift());
return result.concat(a.length? a : b);
}
var test = [-100,3,53,21,4,0];
console.log(mergeSort(test));
im Vergleich online gefunden kann ich keinen signifikanten Unterschied außer einige finden Syntax. Aus irgendeinem Grund wird mein Code nicht sowohl in der Chrome-dev-Konsole als auch in der node.js-Umgebung ausgeführt. In Chrome gibt es kein Ergebnis und in node.js gibt es
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory Abort trap: 6
Kann jemand mir helfen zu verstehen, was ist der Unterschied zwischen den zwei Schnipsel, die tatsächlich den Unterschied gemacht?
Vielen Dank im Voraus!
Danke, dass das Problem zu lösen –
@SamHe Wenn Sie die Antwort als richtig überprüfen können, wäre es wirklich hilfreich :) –
@ Luka Lopusina ahh, tut mir leid, ich bin ein bisschen neu. Danke für die Erinnerung! –