diff --git a/src/main/java/com/epam/university/java/core/task059/Task059.java b/src/main/java/com/epam/university/java/core/task059/Task059.java new file mode 100644 index 000000000..1fb157505 --- /dev/null +++ b/src/main/java/com/epam/university/java/core/task059/Task059.java @@ -0,0 +1,19 @@ +package com.epam.university.java.core.task059; + +/** + * Count sort. + * + *

+ * Given a list of integers. Every number is > 0 and < 10. + * Need to sort the sequence. Algorithm complexity must be O(n). + *

+ */ +public interface Task059 { + /** + * Returns sorted sequence. + * + * @param sequence array to sort + * @return sorted array + */ + int[] countSort(int[] sequence); +} diff --git a/src/test/java/com/epam/university/java/core/task059/Task059Test.java b/src/test/java/com/epam/university/java/core/task059/Task059Test.java new file mode 100644 index 000000000..058b04a20 --- /dev/null +++ b/src/test/java/com/epam/university/java/core/task059/Task059Test.java @@ -0,0 +1,42 @@ +package com.epam.university.java.core.task059; + +import com.epam.university.java.core.helper.TestHelper; +import com.epam.university.java.core.task056.Task056; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class Task059Test { + private Task059 instance; + + @Before + public void setUp() throws Exception { + instance = TestHelper.getInstance(Task059.class); + } + + @Test(expected = IllegalArgumentException.class) + public void arrayIsNull() throws Exception { + instance.countSort(null); + } + + @Test + public void first() throws Exception { + final int[] input = {1, 3, 2, 7, 2, 2, 2, 3}; + final int[] target = {1, 2, 2, 2, 3, 3, 7}; + final int[] actual = instance.countSort(input); + for (int i = 0; i < target.length; i++) { + assertEquals("Wrong result", target[i], actual[i]); + } + } + + @Test + public void second() throws Exception { + final int[] input = {2, 1, 1, 1, 3, 2, 2, 2, 3, 2, 3, 2, 2, 1, 1}; + final int[] target = {1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3}; + final int[] actual = instance.countSort(input); + for (int i = 0; i < target.length; i++) { + assertEquals("Wrong result", target[i], actual[i]); + } + } +}