简体   繁体   中英

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()

Output:-

  1. Aux -> 7 2 9 3 Main -> 2 7 9 3

  2. Aux -> 7 2 9 3 Main -> 2 7 3 9

  3. Aux -> 2 7 3 9 Main -> 2 3 7 9

This is working code of Merge Sort. But I am not able to get that how in the 3rd call of doMerge(), the auxilaryArray get changed even I don't make any change to it. In the code all the changes are happening to mainArray. PLZ help me...

Thanks...

在此处输入图片说明

Visit Graphical Structure for Visualization of mergesort it may help you.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM