[英]Merge Sort JS …Not able to understand it
function MergeSortCaller() { let array = [7, 2, 9, 3] const auxiliaryArray = array.slice(); partition (array, 0, array.length - 1, auxiliaryArray); } function partition( mainArray, startIdx, endIdx, auxiliaryArray, ) { if (startIdx === endIdx) return; const middleIdx = Math.floor((startIdx + endIdx) / 2); partition (auxiliaryArray, startIdx, middleIdx, mainArray); partition (auxiliaryArray, middleIdx + 1, endIdx, mainArray); doMerge (mainArray, startIdx, middleIdx, endIdx, auxiliaryArray); } function doMerge( mainArray, startIdx, middleIdx, endIdx, auxiliaryArray, ) { let k = startIdx; let i = startIdx; let j = middleIdx + 1; while (i <= middleIdx && j <= endIdx) { if (auxiliaryArray[i] <= auxiliaryArray[j]) { mainArray[k++] = auxiliaryArray[i++]; } else { mainArray[k++] = auxiliaryArray[j++]; } } while (i <= middleIdx) { mainArray[k++] = auxiliaryArray[i++]; } while (j <= endIdx) { mainArray[k++] = auxiliaryArray[j++]; } console.log(auxiliaryArray, mainArray) } MergeSortCaller()
輸出:-
輔助 -> 7 2 9 3 主 -> 2 7 9 3
輔助 -> 7 2 9 3 主 -> 2 7 3 9
輔助 -> 2 7 3 9 主 -> 2 3 7 9
這是合並排序的工作代碼。 但是我無法知道在第三次調用 doMerge() 時,即使我沒有對其進行任何更改,auxilaryArray 也會發生更改。 在代碼中,所有更改都發生在 mainArray 上。 LZ幫幫我...
謝謝...
訪問用於合並排序可視化的圖形結構它可能對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.