簡體   English   中英

Merge Sort JS ……看不懂

[英]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()

輸出:-

  1. 輔助 -> 7 2 9 3 主 -> 2 7 9 3

  2. 輔助 -> 7 2 9 3 主 -> 2 7 3 9

  3. 輔助 -> 2 7 3 9 主 -> 2 3 7 9

這是合並排序的工作代碼。 但是我無法知道在第三次調用 doMerge() 時,即使我沒有對其進行任何更改,auxilaryArray 也會發生更改。 在代碼中,所有更改都發生在 mainArray 上。 LZ幫幫我...

謝謝...

在此處輸入圖片說明

訪問用於合並排序可視化的圖形結構它可能對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM