added code to count write operations used

This commit is contained in:
2020-06-02 13:31:55 -05:00
parent 2e8fa28a5a
commit 9597c56c5d
5 changed files with 15 additions and 5 deletions

View File

@@ -168,6 +168,7 @@ public class AlgorithmTester{
} }
System.out.println("\n"+e.getSortType()+" sort took:"); System.out.println("\n"+e.getSortType()+" sort took:");
System.out.println(e.getComparisonsUsed()+" comparisons"); System.out.println(e.getComparisonsUsed()+" comparisons");
System.out.println(e.getWritesUsed()+" write operations");
System.out.println(e.getTimeUsed().toMillis()+" milliseconds"); System.out.println(e.getTimeUsed().toMillis()+" milliseconds");
} }

View File

@@ -21,13 +21,13 @@ public class CountingSorter extends Sorter{
int[] countArray = new int[max-min+1]; int[] countArray = new int[max-min+1];
for(int e: numbers){ for(int e: numbers){
countArray[e-min]++; countArray[e-min]++;
wrtiesUsed++; writesUsed++;
} }
int index=0; int index=0;
for(int i=0;i<countArray.length;i++){ for(int i=0;i<countArray.length;i++){
while(countArray[i]!=0){ while(countArray[i]!=0){
numbers[index]=i+min; numbers[index]=i+min;
wrtiesUsed++; writesUsed++;
index++; index++;
countArray[i]--; countArray[i]--;
} }

View File

@@ -16,9 +16,11 @@ public class InsertionSorter extends Sorter{
int j=i-1; int j=i-1;
while(j>=0 && compare(numbers[j],insertionValue)>0){ while(j>=0 && compare(numbers[j],insertionValue)>0){
numbers[j+1]=numbers[j]; numbers[j+1]=numbers[j];
writesUsed++;
j--; j--;
} }
numbers[j+1]=insertionValue; numbers[j+1]=insertionValue;
writesUsed++;
} }
} }

View File

@@ -32,30 +32,37 @@ public class MergeSorter extends Sorter{
int[] right=new int[sizeRight]; int[] right=new int[sizeRight];
for(int i=0;i<sizeLeft;i++){ for(int i=0;i<sizeLeft;i++){
left[i]=numbers[leftIndex+i]; 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]; 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]; numbers[k]=left[i];
writesUsed++;
i++; i++;
} }
else{ else{
numbers[k]=right[j]; numbers[k]=right[j];
writesUsed++;
j++; j++;
} }
k++; k++;
} }
while(i<sizeLeft){ while(i<sizeLeft){
numbers[k]=left[i]; numbers[k]=left[i];
writesUsed++;
i++; i++;
k++; k++;
} }
while(j<sizeRight){ while(j<sizeRight){
numbers[k]=right[j]; numbers[k]=right[j];
writesUsed++;
j++; j++;
k++; k++;
} }

View File

@@ -13,7 +13,7 @@ abstract class Sorter {
protected String sortType; protected String sortType;
protected Integer[] numbers; protected Integer[] numbers;
protected long comparisonsUsed = 0; protected long comparisonsUsed = 0;
protected long wrtiesUsed=0; protected long writesUsed=0;
public Sorter(String st, String filename){ public Sorter(String st, String filename){
sortType=st; sortType=st;
@@ -33,7 +33,7 @@ abstract class Sorter {
int tmp = numbers[a]; int tmp = numbers[a];
numbers[a] = numbers[b]; numbers[a] = numbers[b];
numbers[b] = tmp; numbers[b] = tmp;
wrtiesUsed+=2; writesUsed+=2;
} }
int compare(int a, int b){ int compare(int a, int b){
@@ -46,7 +46,7 @@ abstract class Sorter {
this.sort(); this.sort();
Instant end = Instant.now(); Instant end = Instant.now();
Duration time = Duration.between(start,end); Duration time = Duration.between(start,end);
SortResult output = new SortResult(sortType, numbers, comparisonsUsed, time); SortResult output = new SortResult(sortType, numbers, comparisonsUsed, writesUsed, time);
return output; return output;
} }