k-nearest neighbor search