initial commit
This commit is contained in:
54
Sorting/WordSorter.java
Normal file
54
Sorting/WordSorter.java
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
package Sorting;
|
||||||
|
|
||||||
|
import java.time.Duration;
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
|
public abstract class WordSorter {
|
||||||
|
|
||||||
|
protected String sortType;
|
||||||
|
protected String[] words;
|
||||||
|
protected long comparisonsUsed = 0;
|
||||||
|
protected long writesUsed=0;
|
||||||
|
|
||||||
|
public WordSorter(String sortType, RandomWordFileReader reader){
|
||||||
|
this.sortType = sortType;
|
||||||
|
words = new String[reader.getWords().size()];
|
||||||
|
reader.getWords().toArray(words);
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract void sort();
|
||||||
|
|
||||||
|
protected int compare(String a, String b){
|
||||||
|
comparisonsUsed++;
|
||||||
|
return a.compareTo(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void writeToArray(String[] array, int index, String value){
|
||||||
|
array[index]=value;
|
||||||
|
writesUsed++;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void swap(String[] array, int indexA, int indexB){
|
||||||
|
String tmp = array[indexA];
|
||||||
|
array[indexA] = array[indexB];
|
||||||
|
array[indexB] = tmp;
|
||||||
|
writesUsed+=2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public WordSortResult measuredSort(){
|
||||||
|
if(words.length!=0){
|
||||||
|
Instant start = Instant.now();
|
||||||
|
this.sort();
|
||||||
|
Instant end = Instant.now();
|
||||||
|
Duration time = Duration.between(start,end);
|
||||||
|
WordSortResult output = new WordSortResult(sortType, words, comparisonsUsed, writesUsed, time);
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
System.out.println("Nothing to sort using "+sortType);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user