Revert "Stream test"
This commit is contained in:
@@ -138,33 +138,33 @@ public class AlgorithmTester{
|
||||
boolean quickTWP=sortingAlgoChoices[5];
|
||||
boolean merge=sortingAlgoChoices[6];
|
||||
ArrayList<SortResult> results = new ArrayList<SortResult>();
|
||||
RandomNumberFileReader reader = new RandomNumberFileReader(filename);
|
||||
|
||||
if(bubble){
|
||||
BubbleSorter bubSorter = new BubbleSorter(reader);
|
||||
BubbleSorter bubSorter = new BubbleSorter(filename);
|
||||
results.add(bubSorter.measuredSort());
|
||||
}
|
||||
if(selection){
|
||||
SelectionSorter selSorter = new SelectionSorter(reader);
|
||||
SelectionSorter selSorter = new SelectionSorter(filename);
|
||||
results.add(selSorter.measuredSort());
|
||||
}
|
||||
if(insertion){
|
||||
InsertionSorter inSorter = new InsertionSorter(reader);
|
||||
InsertionSorter inSorter = new InsertionSorter(filename);
|
||||
results.add(inSorter.measuredSort());
|
||||
}
|
||||
if(counting){
|
||||
CountingSorter countSorter = new CountingSorter(reader);
|
||||
CountingSorter countSorter = new CountingSorter(filename);
|
||||
results.add(countSorter.measuredSort());
|
||||
}
|
||||
if(quick){
|
||||
QuickSorter qSorter = new QuickSorter(reader);
|
||||
QuickSorter qSorter = new QuickSorter(filename);
|
||||
results.add(qSorter.measuredSort());
|
||||
}
|
||||
if(quickTWP){
|
||||
QuickSorterThreeWay qTWPSorter = new QuickSorterThreeWay(reader);
|
||||
QuickSorterThreeWay qTWPSorter = new QuickSorterThreeWay(filename);
|
||||
results.add(qTWPSorter.measuredSort());
|
||||
}
|
||||
if(merge){
|
||||
MergeSorter mSorter = new MergeSorter(reader);
|
||||
MergeSorter mSorter = new MergeSorter(filename);
|
||||
results.add(mSorter.measuredSort());
|
||||
}
|
||||
for(SortResult e: results){
|
||||
@@ -174,7 +174,7 @@ public class AlgorithmTester{
|
||||
}
|
||||
System.out.print("\n");
|
||||
}
|
||||
System.out.println("\n"+e.getSortType()+" of "+e.getSortCount()+" numbers with range "+e.getMin()+" to "+e.getMax()+" took:");
|
||||
System.out.println("\n"+e.getSortType()+" of "+e.getSortCount()+" numbers took:");
|
||||
System.out.println(e.getComparisonsUsed()+" comparisons");
|
||||
System.out.println(e.getWritesUsed()+" write operations");
|
||||
System.out.println(e.getTimeUsed()+" milliseconds");
|
||||
|
||||
@@ -3,8 +3,8 @@ package Sorting;
|
||||
public class BubbleSorter extends Sorter{
|
||||
//a class to sort arrays of numbers using bubble sort
|
||||
|
||||
public BubbleSorter(RandomNumberFileReader reader){
|
||||
super("bubble sort", reader);
|
||||
public BubbleSorter(String filename){
|
||||
super("bubble sort", filename);
|
||||
}
|
||||
|
||||
void sort(){
|
||||
|
||||
@@ -4,8 +4,8 @@ import java.util.Arrays;
|
||||
|
||||
public class CountingSorter extends Sorter{
|
||||
|
||||
public CountingSorter(RandomNumberFileReader reader){
|
||||
super("counting sort", reader);
|
||||
public CountingSorter(String filename){
|
||||
super("counting sort", filename);
|
||||
}
|
||||
|
||||
void sort(){
|
||||
|
||||
@@ -5,8 +5,8 @@ package Sorting;
|
||||
|
||||
public class InsertionSorter extends Sorter{
|
||||
|
||||
public InsertionSorter(RandomNumberFileReader reader){
|
||||
super("insertion sort", reader);
|
||||
public InsertionSorter(String filename){
|
||||
super("insertion sort", filename);
|
||||
}
|
||||
|
||||
void sort(){
|
||||
|
||||
@@ -2,8 +2,8 @@ package Sorting;
|
||||
|
||||
public class MergeSorter extends Sorter{
|
||||
|
||||
public MergeSorter(RandomNumberFileReader reader){
|
||||
super("merge sort",reader);
|
||||
public MergeSorter(String filename){
|
||||
super("merge sort",filename);
|
||||
}
|
||||
|
||||
void sort(){
|
||||
@@ -28,34 +28,41 @@ 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
|
||||
Integer[] left=new Integer[sizeLeft];
|
||||
Integer[] right=new Integer[sizeRight];
|
||||
int[] left=new int[sizeLeft];
|
||||
int[] right=new int[sizeRight];
|
||||
for(int i=0;i<sizeLeft;i++){
|
||||
writeToArray(left, i, numbers[leftIndex+i]);
|
||||
left[i]=numbers[leftIndex+i];
|
||||
writesUsed++;
|
||||
}
|
||||
for(int i=0;i<sizeRight;i++){
|
||||
writeToArray(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 k=leftIndex;//index of numbers array
|
||||
while(i<sizeLeft&&j<sizeRight){
|
||||
if(compare(left[i],right[j])<1){
|
||||
writeToArray(numbers, k, left[i]);
|
||||
numbers[k]=left[i];
|
||||
writesUsed++;
|
||||
|
||||
i++;
|
||||
}
|
||||
else{
|
||||
writeToArray(numbers, k, right[j]);
|
||||
numbers[k]=right[j];
|
||||
writesUsed++;
|
||||
j++;
|
||||
}
|
||||
k++;
|
||||
}
|
||||
while(i<sizeLeft){
|
||||
writeToArray(numbers, k, left[i]);
|
||||
numbers[k]=left[i];
|
||||
writesUsed++;
|
||||
i++;
|
||||
k++;
|
||||
}
|
||||
while(j<sizeRight){
|
||||
writeToArray(numbers, k, right[j]);
|
||||
numbers[k]=right[j];
|
||||
writesUsed++;
|
||||
j++;
|
||||
k++;
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@ package Sorting;
|
||||
|
||||
public class QuickSorter extends Sorter{
|
||||
|
||||
public QuickSorter(RandomNumberFileReader reader){
|
||||
super("quick sort", reader);
|
||||
public QuickSorter(String filename){
|
||||
super("quick sort", filename);
|
||||
}
|
||||
|
||||
public QuickSorter(String qsortVariant, RandomNumberFileReader reader){
|
||||
super(qsortVariant, reader);
|
||||
public QuickSorter(String qsortVariant, String filename){
|
||||
super(qsortVariant, filename);
|
||||
}
|
||||
|
||||
void sort(){
|
||||
|
||||
@@ -6,8 +6,8 @@ package Sorting;
|
||||
|
||||
public class QuickSorterThreeWay extends QuickSorter{
|
||||
|
||||
public QuickSorterThreeWay(RandomNumberFileReader reader){
|
||||
super("quick sort (3-way partition)", reader);
|
||||
public QuickSorterThreeWay(String filename){
|
||||
super("quick sort (3-way partition)", filename);
|
||||
}
|
||||
/*
|
||||
void sort(){
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
package Sorting;
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.io.BufferedWriter;
|
||||
import java.util.Random;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
//import java.io.File;
|
||||
//import java.io.FileWriter;
|
||||
//import java.lang.Math;
|
||||
import java.io.FileWriter;
|
||||
import java.lang.Math;
|
||||
|
||||
/**
|
||||
* This class will allow the user to make a file of random integers.
|
||||
@@ -29,27 +24,6 @@ public class RandomNumberFileMaker {
|
||||
max=M+1;
|
||||
}
|
||||
|
||||
//new version using streams and a try-with-resouces block
|
||||
public void writeFile(){
|
||||
try(BufferedWriter writer = Files.newBufferedWriter(Path.of(filename), StandardOpenOption.CREATE_NEW)){
|
||||
Random random = new Random();
|
||||
random.ints(count, min, max+1)
|
||||
.forEach(num ->
|
||||
{
|
||||
try{
|
||||
writer.write(Integer.toString(num)); writer.newLine();
|
||||
}catch (IOException ex){
|
||||
System.out.println("An error occurred.");
|
||||
}
|
||||
});
|
||||
}catch (IOException ex){
|
||||
System.out.println("Could not make new file named "+filename);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//previous version retained for reference.
|
||||
/*
|
||||
public void writeFile(){
|
||||
try{
|
||||
File randomNumbers = new File(filename);
|
||||
@@ -68,6 +42,6 @@ public class RandomNumberFileMaker {
|
||||
}catch (IOException ex){
|
||||
System.err.println(ex);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
}
|
||||
@@ -12,17 +12,6 @@ class RandomNumberFileReader{
|
||||
private ArrayList<Integer> numbers = new ArrayList<Integer>();
|
||||
|
||||
public RandomNumberFileReader(String file){
|
||||
//reads text from file of integers, one on each line
|
||||
//uses try-with-resources loop to automatically close BufferedReader
|
||||
//uses Stream operations instead of while loop
|
||||
try(BufferedReader reader = Files.newBufferedReader(Path.of(file));){
|
||||
reader.lines().mapToInt(Integer::parseInt).forEach(num -> numbers.add(num));
|
||||
}catch (IOException ex){
|
||||
System.err.println(ex);
|
||||
}
|
||||
|
||||
/*
|
||||
//previous version retained for reference
|
||||
//Reads in from a text file of integers, one on each line
|
||||
try{
|
||||
BufferedReader reader = Files.newBufferedReader(Path.of(file));
|
||||
@@ -34,7 +23,6 @@ class RandomNumberFileReader{
|
||||
} catch (IOException ex){
|
||||
System.err.println(ex);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
public ArrayList<Integer> getNumbers(){
|
||||
|
||||
@@ -2,8 +2,8 @@ package Sorting;
|
||||
|
||||
public class SelectionSorter extends Sorter {
|
||||
//a class to sort an array of numbers using selection sort
|
||||
public SelectionSorter(RandomNumberFileReader reader){
|
||||
super("selection sort", reader);
|
||||
public SelectionSorter(String filename){
|
||||
super("selection sort", filename);
|
||||
}
|
||||
|
||||
void sort(){
|
||||
|
||||
@@ -75,14 +75,4 @@ public class SortResult {
|
||||
return nf.format(sortedArray.length);
|
||||
}
|
||||
|
||||
public String getMin(){
|
||||
NumberFormat nf = NumberFormat.getInstance(Locale.US);
|
||||
return nf.format(sortedArray[0]);
|
||||
}
|
||||
|
||||
public String getMax(){
|
||||
NumberFormat nf = NumberFormat.getInstance(Locale.US);
|
||||
return nf.format(sortedArray[sortedArray.length-1]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -15,9 +15,9 @@ abstract class Sorter {
|
||||
protected long comparisonsUsed = 0;
|
||||
protected long writesUsed=0;
|
||||
|
||||
public Sorter(String st, RandomNumberFileReader reader){
|
||||
public Sorter(String st, String filename){
|
||||
sortType=st;
|
||||
//RandomNumberFileReader reader = new RandomNumberFileReader(filename);
|
||||
RandomNumberFileReader reader = new RandomNumberFileReader(filename);
|
||||
numbers = new Integer[reader.getNumbers().size()];
|
||||
reader.getNumbers().toArray(numbers);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user