add Test for InsertionSort

This commit is contained in:
lq 2018-08-30 01:34:59 +08:00
parent 0adfcaca7a
commit 47093451ac
2 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,27 @@
package src.main.java.com.sorts;
public class InsertionSort {
/**
* This method implements the Generic Insertion Sort
* Sorts the array in increasing order
*
* @param array The array to be sorted
**/
public <T extends Comparable<T>> T[] sort(T[] array) {
for (int j = 1; j < array.length; j++) {
// Picking up the key(Card)
T key = array[j];
int i = j - 1;
while (i >= 0 && SortUtils.less(key, array[i])) {
array[i + 1] = array[i];
i--;
}
// Placing the key (Card) at its correct position in the sorted subarray
array[i + 1] = key;
}
return array;
}
}

View File

@ -0,0 +1,27 @@
package src.test.java.com.sorts;
import org.junit.Assert;
import org.junit.Test;
import src.main.java.com.sorts.InsertionSort;
import java.util.Arrays;
public class InsertionSortTest {
@Test
public void insertionSortTest() {
InsertionSort insertionSort = new InsertionSort();
Integer[] unsortedInt = new Integer[]{0, 5, 9, 2, 1, 3, 4, 8, 6, 7};
Integer[] sortedInt = new Integer[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
System.out.println(Arrays.toString(insertionSort.sort(unsortedInt)));
Assert.assertArrayEquals(sortedInt, insertionSort.sort(unsortedInt));
Character[] unsortedChar = new Character[]{'f', 'h', 'c', 'a', 'b', 'd', 'g', 'e'};
Character[] sortedChar = new Character[]{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'};
System.out.println(Arrays.toString(insertionSort.sort(unsortedChar)));
Assert.assertArrayEquals(sortedChar, insertionSort.sort(unsortedChar));
}
}