public Instances pruneToK(Instances neighbours,double[] distances,int k){
  if (neighbours == null || distances == null || neighbours.numInstances() == 0) {
    return null;
  }
  if (k < 1) {
    k=1;
  }
  int currentK=0;
  double currentDist;
  for (int i=0; i < neighbours.numInstances(); i++) {
    currentK++;
    currentDist=distances[i];
    if (currentK > k && currentDist != distances[i - 1]) {
      currentK--;
      neighbours=new Instances(neighbours,0,currentK);
      break;
    }
  }
  return neighbours;
}

public Instances pruneToK ( Instances neighbours , double [ ] distances , int k ) { if ( neighbours == null || distances == null || neighbours . numInstances ( ) == 0 ) { return null ; } if ( k < 1 ) { k = 1 ; } int currentK = 0 ; double currentDist ; for ( int i = 0 ; i < neighbours . numInstances ( ) ; i ++ ) { currentK ++ ; currentDist = distances [ i ] ; if ( currentK > k && currentDist != distances [ i - 1 ] ) { currentK -- ; neighbours = new Instances ( neighbours , 0 , currentK ) ; break ; } } return neighbours ; }
prunes the list to contain the k nearest neighbors . if there are multiple neighbors at the k ' th distance , all will be kept .
