@ -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); | |||
} | |||
} |