@Override public void insert(DoubleDBIDPair e) { final int kminus1 = k - 1; final double dist = e.doubleValue(); if (size < k || dist <= data[kminus1].doubleValue()) { // Ensure we have enough space. if (size > data.length) { grow(); } if (e instanceof DoubleIntegerDBIDPair) { insertionSort((DoubleIntegerDBIDPair) e); } else { insertionSort(new DoubleIntegerDBIDPair(dist, e.internalGetIndex())); } // Truncate if necessary: if (size > k && data[k].doubleValue() > data[kminus1].doubleValue()) { truncate(); } } }