繁体   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