question: private 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_trainInstances . numAttributes ( ) ; } else { firstI = first . index ( p1 ) ; } if ( p2 >= second . numValues ( ) ) { secondI = m_trainInstances . numAttributes ( ) ; } else { secondI = second . index ( p2 ) ; } if ( firstI == m_trainInstances . classIndex ( ) ) { p1 ++ ; continue ; } if ( secondI == m_trainInstances . 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 ; } return distance ; }
target:  Calculates the distance between two instances