use writeToArray() method

This commit is contained in:
2020-06-11 12:20:13 -05:00
parent 5a45b0ca3e
commit 3ffcb05d13

View File

@@ -28,41 +28,46 @@ public class MergeSorter extends Sorter{
void merge(int leftIndex, int middleIndex, int rightIndex){ void merge(int leftIndex, int middleIndex, int rightIndex){
int sizeLeft=middleIndex-leftIndex+1;//add 1 to include both endpoints int sizeLeft=middleIndex-leftIndex+1;//add 1 to include both endpoints
int sizeRight=rightIndex-middleIndex;//both endpoints already included, as middleIndex is part of left array int sizeRight=rightIndex-middleIndex;//both endpoints already included, as middleIndex is part of left array
int[] left=new int[sizeLeft]; Integer[] left=new Integer[sizeLeft];
int[] right=new int[sizeRight]; Integer[] right=new Integer[sizeRight];
for(int i=0;i<sizeLeft;i++){ for(int i=0;i<sizeLeft;i++){
left[i]=numbers[leftIndex+i]; writeToArray(left, i, numbers[leftIndex+i]);
writesUsed++; //left[i]=numbers[leftIndex+i];
//writesUsed++;
} }
for(int i=0;i<sizeRight;i++){ for(int i=0;i<sizeRight;i++){
right[i]=numbers[middleIndex+1+i]; writeToArray(right, i, numbers[middleIndex+1+i]);
writesUsed++; //right[i]=numbers[middleIndex+1+i];
//writesUsed++;
} }
int i=0, j=0;//indices of left and right array int i=0, j=0;//indices of left and right array
int k=leftIndex;//index of numbers array int k=leftIndex;//index of numbers array
while(i<sizeLeft&&j<sizeRight){ while(i<sizeLeft&&j<sizeRight){
if(compare(left[i],right[j])<1){ if(compare(left[i],right[j])<1){
numbers[k]=left[i]; writeToArray(numbers, k, left[i]);
writesUsed++; //numbers[k]=left[i];
//writesUsed++;
i++; i++;
} }
else{ else{
numbers[k]=right[j]; writeToArray(numbers, k, right[i]);
writesUsed++; //numbers[k]=right[j];
//writesUsed++;
j++; j++;
} }
k++; k++;
} }
while(i<sizeLeft){ while(i<sizeLeft){
numbers[k]=left[i]; writeToArray(numbers, k, left[i]);
writesUsed++; //numbers[k]=left[i];
//writesUsed++;
i++; i++;
k++; k++;
} }
while(j<sizeRight){ while(j<sizeRight){
numbers[k]=right[j]; writeToArray(numbers, k, right[j]);
writesUsed++; //numbers[k]=right[j];
//writesUsed++;
j++; j++;
k++; k++;
} }