|
1 |
| -importSortfrom"../Sort"; |
| 1 | +importSortfrom'../Sort'; |
2 | 2 |
|
3 | 3 | exportdefaultclassMergeSortextendsSort{
|
4 | 4 | sort(originalArray){
|
@@ -26,38 +26,33 @@ export default class MergeSort extends Sort {
|
26 | 26 | mergeSortedArrays(leftArray,rightArray){
|
27 | 27 | constsortedArray=[];
|
28 | 28 |
|
29 |
| -// Use array pointers to exclude old elements after they have been added to the sorted array |
| 29 | +// Use array pointers to exclude old elements after they have been added to the sorted array. |
30 | 30 | letleftIndex=0;
|
31 | 31 | letrightIndex=0;
|
32 | 32 |
|
33 | 33 | while(leftIndex<leftArray.length&&rightIndex<rightArray.length){
|
34 |
| -// Find the minimum element between the left and right array |
35 |
| -if( |
36 |
| -this.comparator.lessThanOrEqual( |
37 |
| -leftArray[leftIndex], |
38 |
| -rightArray[rightIndex] |
39 |
| -) |
40 |
| -){ |
41 |
| -sortedArray.push(leftArray[leftIndex]); |
| 34 | +letminElement=null; |
42 | 35 |
|
| 36 | +// Find the minimum element between the left and right array. |
| 37 | +if(this.comparator.lessThanOrEqual(leftArray[leftIndex],rightArray[rightIndex])){ |
| 38 | +minElement=leftArray[leftIndex]; |
43 | 39 | // Increment index pointer to the right
|
44 | 40 | leftIndex+=1;
|
45 |
| - |
46 |
| -// Call visiting callback. |
47 |
| -this.callbacks.visitingCallback(leftArray[leftIndex]); |
48 | 41 | }else{
|
49 |
| -sortedArray.push(rightArray[rightIndex]); |
50 |
| - |
| 42 | +minElement=rightArray[rightIndex]; |
51 | 43 | // Increment index pointer to the right
|
52 | 44 | rightIndex+=1;
|
53 |
| - |
54 |
| -// Call visiting callback. |
55 |
| -this.callbacks.visitingCallback(rightArray[rightIndex]); |
56 | 45 | }
|
| 46 | + |
| 47 | +// Add the minimum element to the sorted array. |
| 48 | +sortedArray.push(minElement); |
| 49 | + |
| 50 | +// Call visiting callback. |
| 51 | +this.callbacks.visitingCallback(minElement); |
57 | 52 | }
|
58 | 53 |
|
59 |
| -// There will beone element remaining from either the left OR the right |
60 |
| -// Concatenate the remainingelement into the sorted array |
| 54 | +// There will beelements remaining from either the left OR the right |
| 55 | +// Concatenate the remainingelements into the sorted array |
61 | 56 | returnsortedArray
|
62 | 57 | .concat(leftArray.slice(leftIndex))
|
63 | 58 | .concat(rightArray.slice(rightIndex));
|
|