Revert "Revert "Stream test""

This commit is contained in:
eugenefischer
2020-06-11 14:06:24 -05:00
committed by GitHub
parent c8ea19c3dc
commit 31a6ad5cf8
12 changed files with 88 additions and 47 deletions

View File

@@ -2,8 +2,8 @@ package Sorting;
public class MergeSorter extends Sorter{
public MergeSorter(String filename){
super("merge sort",filename);
public MergeSorter(RandomNumberFileReader reader){
super("merge sort",reader);
}
void sort(){
@@ -28,41 +28,34 @@ public class MergeSorter extends Sorter{
void merge(int leftIndex, int middleIndex, int rightIndex){
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[] left=new int[sizeLeft];
int[] right=new int[sizeRight];
Integer[] left=new Integer[sizeLeft];
Integer[] right=new Integer[sizeRight];
for(int i=0;i<sizeLeft;i++){
left[i]=numbers[leftIndex+i];
writesUsed++;
writeToArray(left, i, numbers[leftIndex+i]);
}
for(int i=0;i<sizeRight;i++){
right[i]=numbers[middleIndex+1+i];
writesUsed++;
writeToArray(right, i, numbers[middleIndex+1+i]);
}
int i=0, j=0;//indices of left and right array
int k=leftIndex;//index of numbers array
while(i<sizeLeft&&j<sizeRight){
if(compare(left[i],right[j])<1){
numbers[k]=left[i];
writesUsed++;
writeToArray(numbers, k, left[i]);
i++;
}
else{
numbers[k]=right[j];
writesUsed++;
writeToArray(numbers, k, right[j]);
j++;
}
k++;
}
while(i<sizeLeft){
numbers[k]=left[i];
writesUsed++;
writeToArray(numbers, k, left[i]);
i++;
k++;
}
while(j<sizeRight){
numbers[k]=right[j];
writesUsed++;
writeToArray(numbers, k, right[j]);
j++;
k++;
}