@@ -0,0 +1,2239 @@
+/**%0A * The MIT License (MIT)%0A * Copyright (c) 2016 Haines Chan%0A * Permission is hereby granted, free of charge, to any person obtaining a copy%0A * of this software and associated documentation files (the %22Software%22), to%0A * deal in the Software without restriction, including without limitation the%0A * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or%0A * sell copies of the Software, and to permit persons to whom the Software is%0A * furnished to do so, subject to the following conditions:%0A * The above copyright notice and this permission notice shall be included in%0A * all copies or substantial portions of the Software.%0A * THE SOFTWARE IS PROVIDED %22AS IS%22, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR%0A * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,%0A * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE%0A * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER%0A * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING%0A * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS%0A * IN THE SOFTWARE.%0A */%0A%0Apackage io.marmot.laboratory.algorithm;%0A%0Aimport org.junit.Assert;%0Aimport org.junit.Test;%0Aimport org.junit.Before;%0Aimport org.junit.After;%0A%0Aimport java.util.Comparator;%0A%0Apublic class TopKTest %7B%0A%0A  @Before%0A  public void setUp() %7B%0A  %7D%0A%0A  @Test%0A  public void testQuickSelect() %7B%0A    Integer%5B%5D array = %7B45, 42, 13, 87, 36, 55, 67, 13, 90, 54, 51, 9%7D;%0A%0A    Integer i0 = KthSelector.select(array, new Comparator%3CInteger%3E() %7B%0A      @Override%0A      public int compare(Integer o1, Integer o2) %7B%0A        return o1.compareTo(o2);%0A      %7D%0A    %7D, 1 - 1);%0A    Assert.assertEquals((Integer) 9, i0);%0A%0A    Integer i1 = KthSelector.select(array, new Comparator%3CInteger%3E() %7B%0A      @Override%0A      public int compare(Integer o1, Integer o2) %7B%0A        return o1.compareTo(o2);%0A      %7D%0A    %7D, 9 - 1);%0A    Assert.assertEquals((Integer) 55, i1);%0A%0A    Integer i2 = KthSelector.select(array, new Comparator%3CInteger%3E() %7B%0A      @Override%0A      public int compare(Integer o1, Integer o2) %7B%0A        return o1.compareTo(o2);%0A      %7D%0A    %7D, 5 - 1);%0A    Assert.assertEquals((Integer) 42, i2);%0A  %7D%0A%0A  @After%0A  public void tearDown() %7B%0A  %7D%0A%7D

Add test for median of medians.