use writeToArray() method
This commit is contained in:
@@ -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++;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user