diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/parallel/distributed_tree_builder.h b/fastlib/trunk/contrib/dongryel/thesis_research/core/parallel/distributed_tree_builder.h index 8f2673123a..483b00569e 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/parallel/distributed_tree_builder.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/core/parallel/distributed_tree_builder.h @@ -10,6 +10,7 @@ #include #include +#include #include #include "core/parallel/parallel_sample_sort.h" #include "core/table/offset_dense_matrix.h" @@ -260,7 +261,8 @@ class DistributedTreeBuilder { centroid /= static_cast(distributed_table_->local_table()->n_entries()); - // Pairs of point id and its squared distance from the centroid. + // Pairs of point id and its squared distance from the centroid + // and sort them. std::vector< std::pair > point_id_distance_pairs; point_id_distance_pairs.resize( distributed_table_->local_table()->n_entries()); @@ -271,6 +273,11 @@ class DistributedTreeBuilder { point_id_distance_pairs[i].second = metric_in.DistanceSq(point, centroid); } + std::sort( + point_id_distance_pairs.begin(), + point_id_distance_pairs.end(), + boost::bind(&std::pair::second, _1) < + boost::bind(&std::pair::second, _2)); } void SelectSubset_(