|
8 | 8 | import { quickSelectSearch } from '../Search/QuickSelectSearch.js' |
9 | 9 |
|
10 | 10 | export const simplifiedWiggleSort = function (arr) { |
11 | | - const arrSize = arr.length |
12 | 11 | // find Median using QuickSelect |
13 | | - let median = quickSelectSearch(arr, Math.floor(arrSize / 2.0)) |
14 | | - median = median[Math.floor(arrSize / 2.0)] |
| 12 | + let median = quickSelectSearch(arr, Math.floor(arr.length / 2.0)) |
| 13 | + median = median[Math.floor(arr.length / 2.0)] |
15 | 14 |
|
16 | | - const sorted = new Array(arrSize) |
| 15 | + const sorted = new Array(arr.length) |
17 | 16 |
|
18 | 17 | let smallerThanMedianIndx = 0 |
19 | | - let greaterThanMedianIndx = arrSize - 1 - (arrSize % 2) |
| 18 | + let greaterThanMedianIndx = arr.length - 1 - (arr.length % 2) |
20 | 19 |
|
21 | | - arr.forEach(element => { |
22 | | - if (element > median) { |
23 | | - sorted[greaterThanMedianIndx] = element |
| 20 | + for (let i = 0; i < arr.length; i++) { |
| 21 | + if (arr[i] > median) { |
| 22 | + sorted[greaterThanMedianIndx] = arr[i] |
24 | 23 | greaterThanMedianIndx -= 2 |
25 | 24 | } else { |
26 | | - if (smallerThanMedianIndx < arrSize) { |
27 | | - sorted[smallerThanMedianIndx] = element |
| 25 | + if (smallerThanMedianIndx < arr.length) { |
| 26 | + sorted[smallerThanMedianIndx] = arr[i] |
28 | 27 | smallerThanMedianIndx += 2 |
29 | 28 | } else { |
30 | | - sorted[greaterThanMedianIndx] = element |
| 29 | + sorted[greaterThanMedianIndx] = arr[i] |
31 | 30 | greaterThanMedianIndx -= 2 |
32 | 31 | } |
33 | 32 | } |
34 | | - }) |
| 33 | + } |
35 | 34 |
|
36 | 35 | return sorted |
37 | 36 | } |
0 commit comments