@ -0,0 +1,58 @@ | |||||
package net.jrtechs.www.Sorting; | |||||
import net.jrtechs.www.DataStructures.Lists.ArrayList.ArrayBackedList; | |||||
/** | |||||
* Created an array list which is able to sort | |||||
* itself upon request. | |||||
* | |||||
* @param <E> | |||||
* @author Jeffery Russell | |||||
*/ | |||||
public class SortableList<E extends Comparable> extends ArrayBackedList<E> | |||||
{ | |||||
/** Constant for an increasing list */ | |||||
public final int INCREASING_ORDER = 1; | |||||
/** Constant for a decreasing list */ | |||||
public final int DECREASING_ORDER = -1; | |||||
/** | |||||
* Creates a new list of default size | |||||
*/ | |||||
public SortableList() | |||||
{ | |||||
super(); | |||||
} | |||||
/** | |||||
* Creates a new list of non-default size | |||||
*/ | |||||
public SortableList(int size) | |||||
{ | |||||
super(size); | |||||
} | |||||
/** | |||||
* Sorts the list using insertion sort. | |||||
* | |||||
* @param sortOrder constant corresponding to sort type | |||||
*/ | |||||
public void insertionSort(int sortOrder) | |||||
{ | |||||
for(int i = 1; i < this.size(); i++) | |||||
{ | |||||
int reverseIndex = i; | |||||
while(reverseIndex > 0 && this.get(reverseIndex-1) | |||||
.compareTo(this.get(reverseIndex)) == sortOrder) | |||||
{ | |||||
this.swap(reverseIndex, reverseIndex-1); | |||||
reverseIndex--; | |||||
} | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,52 @@ | |||||
package net.jrtechs.www.sorting; | |||||
import net.jrtechs.www.Sorting.SortableList; | |||||
import org.junit.Test; | |||||
import static junit.framework.TestCase.assertNotNull; | |||||
import static junit.framework.TestCase.assertTrue; | |||||
/** | |||||
* Class for testing insertion sort | |||||
* | |||||
* @author Jeffery Russell 8-27-18 | |||||
*/ | |||||
public class InsertionSortTest | |||||
{ | |||||
@Test | |||||
public void testInitalization() | |||||
{ | |||||
SortableList<Double> list = new SortableList<>(); | |||||
assertNotNull(list); | |||||
} | |||||
@Test | |||||
public void testInsertionSortAscending() | |||||
{ | |||||
SortableList<Double> list = new SortableList<>(); | |||||
list.add(1.0); | |||||
list.add(0.0); | |||||
list.add(3.0); | |||||
list.add(-12.0); | |||||
list.insertionSort(list.INCREASING_ORDER); | |||||
assertTrue(list.get(0) == -12.0); | |||||
assertTrue(list.get(list.size() -1) == 3); | |||||
} | |||||
@Test | |||||
public void testInsertionSortDescending() | |||||
{ | |||||
SortableList<Double> list = new SortableList<>(); | |||||
list.add(1.2); | |||||
list.add(1.0); | |||||
list.add(0.0); | |||||
list.add(3.0); | |||||
list.add(-12.0); | |||||
list.insertionSort(list.DECREASING_ORDER); | |||||
assertTrue(list.get(0) == 3.0); | |||||
assertTrue(list.get(list.size() -1) == -12); | |||||
} | |||||
} |