From 389b0e8e6725d82940e7eca54798798e87ac429e Mon Sep 17 00:00:00 2001 From: Kiran Eiden Date: Tue, 4 Jan 2022 14:50:47 -0800 Subject: [PATCH] Only sort in CoverTree::find function if there are more than k points Sorting only needs to be done if the list of KNN candidates is greater than length k. --- src/algorithm/neighbour/cover_tree.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/algorithm/neighbour/cover_tree.rs b/src/algorithm/neighbour/cover_tree.rs index 355a448..ad2b071 100644 --- a/src/algorithm/neighbour/cover_tree.rs +++ b/src/algorithm/neighbour/cover_tree.rs @@ -180,7 +180,9 @@ impl> CoverTree } } - neighbors.sort_by(|a, b| a.1.partial_cmp(&b.1).unwrap()); + if neighbors.len() > k { + neighbors.sort_by(|a, b| a.1.partial_cmp(&b.1).unwrap()); + } Ok(neighbors.into_iter().take(k).collect()) }