protected double distance(Instance first,Instance second){
  double distance=0;
  int firstI, secondI;
  for (int p1=0, p2=0; p1 < first.numValues() || p2 < second.numValues(); ) {
    if (p1 >= first.numValues()) {
      firstI=m_instances.numAttributes();
    }
 else {
      firstI=first.index(p1);
    }
    if (p2 >= second.numValues()) {
      secondI=m_instances.numAttributes();
    }
 else {
      secondI=second.index(p2);
    }
    if (firstI == m_instances.classIndex()) {
      p1++;
      continue;
    }
    if (secondI == m_instances.classIndex()) {
      p2++;
      continue;
    }
    double diff;
    if (firstI == secondI) {
      diff=difference(firstI,first.valueSparse(p1),second.valueSparse(p2));
      p1++;
      p2++;
    }
 else     if (firstI > secondI) {
      diff=difference(secondI,0,second.valueSparse(p2));
      p2++;
    }
 else {
      diff=difference(firstI,first.valueSparse(p1),0);
      p1++;
    }
    distance+=diff * diff;
  }
  return Math.sqrt(distance / m_instances.numAttributes());
}

protected double distance ( Instance first , Instance second ) { double distance = 0 ; int firstI , secondI ; for ( int p1 = 0 , p2 = 0 ; p1 < first . numValues ( ) || p2 < second . numValues ( ) ; ) { if ( p1 >= first . numValues ( ) ) { firstI = m_instances . numAttributes ( ) ; } else { firstI = first . index ( p1 ) ; } if ( p2 >= second . numValues ( ) ) { secondI = m_instances . numAttributes ( ) ; } else { secondI = second . index ( p2 ) ; } if ( firstI == m_instances . classIndex ( ) ) { p1 ++ ; continue ; } if ( secondI == m_instances . classIndex ( ) ) { p2 ++ ; continue ; } double diff ; if ( firstI == secondI ) { diff = difference ( firstI , first . valueSparse ( p1 ) , second . valueSparse ( p2 ) ) ; p1 ++ ; p2 ++ ; } else if ( firstI > secondI ) { diff = difference ( secondI , 0 , second . valueSparse ( p2 ) ) ; p2 ++ ; } else { diff = difference ( firstI , first . valueSparse ( p1 ) , 0 ) ; p1 ++ ; } distance += diff * diff ; } return Math . sqrt ( distance / m_instances . numAttributes ( ) ) ; }
calculates the distance between two instances
