###発生している問題
Gitから拝借してきたソースコードです。
mergesort関数内でalignment(mergesort(left),mergesort(right));
の関数の呼び出しの仕組みかがわかりません。
また何故mergesort関数内でreturn mergeをする必要があるのでしょうか?
理屈を教えていただけないでしょうか...
###該当のソースコード
js
1let array = [23,55,78,19,4]; 2 3const mergesort = (array) =>{ 4 5 if(array.length<2){ 6 7 return array; 8 9 } 10 11 let middle = Math.floor(array.length/2); 12 let left = array.slice(0,middle); 13 let right = array.slice(middle,array.length); 14 15 const merge = alignment(mergesort(left),mergesort(right)); 16 console.log(`ソート後 ${merge}`); 17 return merge; 18 19} 20 21const alignment = (left, right) =>{ 22 23 let alignmentArray = []; 24 25 while(left.length && right.length){ 26 27 if(left[0] <= right[0]){ 28 29 alignmentArray.push(left.shift()); 30 31 }else{ 32 33 alignmentArray.push(right.shift()); 34 35 } 36 37 } 38 39 while(left.length){ 40 41 alignmentArray.push(left.shift()); 42 43 } 44 45 while(right.length){ 46 47 alignmentArray.push(right.shift()); 48 49} 50 51return alignmentArray; 52 53} 54 55console.log(`ソート前 ${array}`); 56mergesort(array); 57 58
こちらのコードはご質問者様が記述したものではなく、どこからか拝借したコードでしょうか。
であればその旨を記載していただけますと幸いです。
記載しました。
回答1件
あなたの回答
tips
プレビュー