{"ScriptPreparationCode":"var arr = [40, 10, 50, 24, 1, 2, 4, -10, 15, 7, 8, 5];","TestCases":[{"Name":"Heap","Code":" \tconst { floor } = Math;\r\n function heapsort(arr, comparator = ascendantComparator) {\r\n const count = arr.length;\r\n let end = count - 1;\r\n\r\n heapify(arr, comparator);\r\n\r\n while (end \u003E 0) {\r\n [arr[end], arr[0]] = [arr[0], arr[end]];\r\n end = end - 1;\r\n siftDown(arr, 0, end, comparator);\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n function ascendantComparator(a, b) {\r\n return a \u003E b ? 1 : a \u003C b ? -1 : 0;\r\n }\r\n\r\n function heapify(array, comparator) {\r\n const count = array.length;\r\n let start = floor((count - 2) / 2);\r\n\r\n while (start \u003E= 0) {\r\n siftDown(array, start, count - 1, comparator);\r\n start = start - 1;\r\n }\r\n }\r\n\r\n function siftDown(arr, start, end, comparator) {\r\n let root = start;\r\n while (root * 2 \u002B 1 \u003C= end) {\r\n const lChild = root * 2 \u002B 1;\r\n const rChild = lChild \u002B 1;\r\n let swap = root;\r\n if (comparator(arr[swap], arr[lChild]) \u003C 0) swap = lChild;\r\n if (rChild \u003C= end \u0026\u0026 comparator(arr[swap], arr[rChild]) \u003C 0) swap = rChild;\r\n if (swap === root) return;\r\n [arr[root], arr[swap]] = [arr[swap], arr[root]];\r\n root = swap;\r\n }\r\n }\r\n\theapsort(arr);","IsDeferred":false},{"Name":"Native sort","Code":"function sortNumber(a, b) {\r\n return a - b;\r\n}\r\narr.sort(sortNumber);","IsDeferred":false}]}