{"ScriptPreparationCode":"function mergeSort(arr) {\r\n if (arr.length \u003C 2) {\r\n return arr;\r\n }\r\n\r\n const midIndex = Math.floor(arr.length / 2);\r\n const left = mergeSort(arr.slice(0, midIndex));\r\n const right = mergeSort(arr.slice(midIndex));\r\n const result = [];\r\n\r\n while (left.length \u0026\u0026 right.length) {\r\n if (left[0] \u003C right[0]) {\r\n result.push(left.shift());\r\n } else {\r\n result.push(right.shift());\r\n }\r\n }\r\n\r\n return [...result, ...left, ...right];\r\n}\r\n\r\nfunction memoize(fn) {\r\n const storage = {};\r\n\r\n return function(...args) {\r\n const key = JSON.stringify(args);\r\n\r\n if (key in storage) {\r\n return storage[key];\r\n } else {\r\n const result = fn(...args);\r\n storage[key] = result;\r\n return result;\r\n }\r\n }\r\n}\r\n\r\nvar memoizedMergeSort = memoize(mergeSort);\r\n\r\nvar array = [...Array(1000)].map(() =\u003E Math.random());","TestCases":[{"Name":"pure","Code":"[...Array(10)].forEach(() =\u003E {\r\n\tmergeSort(array);\r\n});","IsDeferred":false},{"Name":"memoized","Code":"[...Array(10)].forEach(() =\u003E {\r\n\tmemoizedMergeSort(array);\r\n});","IsDeferred":false}]}