MCPcopy Create free account
hub / github.com/betomoedano/JavaScript-Coding-Interview-Questions / subarraySort

Function subarraySort

arrays/subarray-sort.js:3–25  ·  view source on GitHub ↗
(array)

Source from the content-addressed store, hash-verified

1// time O(n) where n is the length of the array
2// space O(1)
3function subarraySort(array) {
4 let minOutOfOrder = Infinity;
5 let maxOutOfOrder = -Infinity;
6
7 for (let i = 0; i < array.length; i++) {
8 const num = array[i];
9 if (isOutOfOrder(i, num, array)) {
10 minOutOfOrder = Math.min(minOutOfOrder, num);
11 maxOutOfOrder = Math.max(maxOutOfOrder, num);
12 }
13 }
14 if (minOutOfOrder === Infinity) return [-1, -1];
15
16 let subarrayLeftIdx = 0;
17 while (minOutOfOrder >= array[subarrayLeftIdx]) {
18 subarrayLeftIdx++;
19 }
20 let subarrayRightIdx = array.length - 1;
21 while (maxOutOfOrder <= array[subarrayRightIdx]) {
22 subarrayRightIdx--;
23 }
24 return [subarrayLeftIdx, subarrayRightIdx];
25}
26
27function isOutOfOrder(i, num, array) {
28 if (i === 0) return num > array[i + 1];

Callers 1

subarray-sort.jsFile · 0.85

Calls 1

isOutOfOrderFunction · 0.85

Tested by

no test coverage detected