algorist/src/main/java/net/abhinavsarkar/algorist/Sorter.java

36 lines
961 B
Java

package net.abhinavsarkar.algorist;
public interface Sorter<T>
{
T[] sort(T[] input, Comparator<T> comparator);
default T select(T[] input, int rank, Comparator<T> comparator) {
if (rank < 1) {
throw new IllegalArgumentException("rank is less than one");
}
if (rank > input.length) {
throw new IllegalArgumentException("rank is larger than input length");
}
T[] sorted = sort(input, comparator);
return sorted[rank - 1];
}
default T[] top(T[] input, int rank, Comparator<T> comparator) {
if (rank < 1) {
throw new IllegalArgumentException("rank is less than one");
}
if (rank > input.length) {
throw new IllegalArgumentException("rank is larger than input length");
}
return sort(input, comparator);
}
@FunctionalInterface
interface Comparator<T> {
int compare(T o1, T o2);
}
}