From e791acc2fea177a988d10f41bb3a15912d495fc2 Mon Sep 17 00:00:00 2001 From: jacekpoz Date: Thu, 9 May 2024 02:33:39 +0200 Subject: [PATCH] add immutable select k --- libselect/src/normal_select.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libselect/src/normal_select.rs b/libselect/src/normal_select.rs index b84e55d..3389cfd 100644 --- a/libselect/src/normal_select.rs +++ b/libselect/src/normal_select.rs @@ -112,9 +112,13 @@ impl NormalSelect { } } - pub fn select_k(&mut self, list: &mut Vec, order_statistic: usize, k: usize) -> u64 { + pub fn select_k_mut(&mut self, list: &mut Vec, order_statistic: usize, k: usize) -> u64 { self._select(list, 0, list.len() - 1, order_statistic, k).1 } + pub fn select_k(&mut self, list: &Vec, order_statistic: usize, k: usize) -> u64 { + let mut list_clone = list.clone(); + self._select(&mut list_clone, 0, list.len() - 1, order_statistic, k).1 + } } impl Select for NormalSelect { @@ -128,7 +132,7 @@ impl Select for NormalSelect { } fn select_mut(&mut self, list: &mut Vec, order_statistic: usize) -> u64 { - self.select_k(list, order_statistic, 5) + self.select_k_mut(list, order_statistic, 5) } fn num_comp(&self) -> u64 {