|
1 | | -const insert = (array,index,element) => { |
2 | | - |
3 | | - let runner = array.length-1; |
| 1 | +const insert = (array, index, element) => { |
4 | 2 |
|
5 | | - while(runner >= index) { |
6 | | - array[runner + 1] = array[runner]; |
7 | | - runner--; |
| 3 | + let runner = array.length - 1; |
| 4 | + |
| 5 | + while (runner >= index) { |
| 6 | + array[runner + 1] = array[runner]; |
| 7 | + runner--; |
8 | 8 | }
|
9 | | - |
| 9 | + |
10 | 10 | array[index] = element;
|
11 | 11 | }
|
12 | 12 |
|
13 | 13 |
|
14 | | -const priorityQueue = (array,element, start, end) => { |
15 | | - |
16 | | - start = start || 0; |
17 | | - end = end || array.length -1; |
18 | | - |
19 | | - console.log(start,end); |
20 | | - if(start > end){ |
21 | | - insert(array,end+1,element); |
22 | | - return; |
23 | | - } |
24 | | - |
25 | | - const mid = Math.floor(start + (end - start)/2); |
26 | | - const midElement = array[mid]; |
27 | | - |
28 | | - if(element >= midElement){ |
29 | | - if(element < array[mid-1] ){ |
30 | | - insert(array,mid,element); |
31 | | - return; |
| 14 | +const priorityQueue = (array, element, start, end) => { |
| 15 | + |
| 16 | + start = start || 0; |
| 17 | + end = end || array.length - 1; |
| 18 | + |
| 19 | + if (start > end) { |
| 20 | + insert(array, end + 1, element); |
| 21 | + return; |
32 | 22 | }
|
33 | | - return priorityQueue(array,element,start,mid-1); |
34 | | - } |
35 | | - |
36 | | - if(element < midElement){ |
37 | | - if(element >= array[mid+1]){ |
38 | | - insert(array,mid+1,element); |
39 | | - return; |
| 23 | + |
| 24 | + const mid = Math.floor(start + (end - start) / 2); |
| 25 | + const midElement = array[mid]; |
| 26 | + |
| 27 | + if (element >= midElement) { |
| 28 | + if (element < array[mid - 1]) { |
| 29 | + insert(array, mid, element); |
| 30 | + return; |
| 31 | + } |
| 32 | + return priorityQueue(array, element, start, mid - 1); |
| 33 | + } |
| 34 | + |
| 35 | + if (element < midElement) { |
| 36 | + if (element >= array[mid + 1]) { |
| 37 | + insert(array, mid + 1, element); |
| 38 | + return; |
| 39 | + } |
| 40 | + return priorityQueue(array, element, mid + 1, end); |
40 | 41 | }
|
41 | | - return priorityQueue(array,element,mid+1,end); |
42 | | - } |
43 | | - |
44 | | -} |
45 | | - |
46 | | -// the search is linear |
47 | | -const priorityQueueWithLinearSearch = (array,element) => { |
48 | | - let i = array.length -1; |
49 | | - while(element >= array[i]){ |
50 | | - i--; |
51 | | - } |
52 | | - insert(array,i+1,element) |
53 | | - } |
54 | | - |
55 | | - const array = []; |
56 | | - |
57 | | - priorityQueue(array,4); |
58 | | - priorityQueue(array,8); |
59 | | - priorityQueue(array,1); |
60 | | - priorityQueue(array,7); |
61 | | - priorityQueue(array,3); |
| 42 | + |
| 43 | +} |
| 44 | + |
| 45 | +const priorityQueueWithLinearSearch = (array, element) => { |
| 46 | + let i = array.length - 1; |
| 47 | + while (element >= array[i]) { |
| 48 | + i--; |
| 49 | + } |
| 50 | + insert(array, i + 1, element) |
| 51 | +} |
| 52 | + |
| 53 | +const array = []; |
| 54 | + |
| 55 | +priorityQueue(array, 4); |
| 56 | +priorityQueue(array, 8); |
| 57 | +priorityQueue(array, 1); |
| 58 | +priorityQueue(array, 7); |
| 59 | +priorityQueue(array, 3); |
62 | 60 |
|
63 | 61 | console.log(array);
|
0 commit comments