|
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