本文简要介绍rust语言中 slice.select_nth_unstable_by_key
的用法。
用法
pub fn select_nth_unstable_by_key<K, F>( &mut self, index: usize, f: F) -> (&mut [T], &mut T, &mut [T]) where F: FnMut(&T) -> K, K: Ord,
使用键提取函数对切片重新排序,以便 index
处的元素位于其最终排序位置。
这种重新排序具有附加属性,即位置上的任何值i < index
将小于或等于某个位置的任何值j > index
使用 key 提取函数。此外,这种重新排序是不稳定的(即任意数量的相等元素可能最终出现在位置index
),就地(即不分配),以及O(n) 最坏的情况下。该函数在其他库中也称为“kth element”。它使用提供的键提取函数返回以下值的三元组:小于给定索引处的所有元素、给定索引处的值以及大于给定索引处的所有元素。
当前实施
当前算法基于用于 sort_unstable
的相同快速排序算法的快速选择部分。
Panics
index >= len()
时发生Panics,这意味着它总是在空切片上发生Panics。
例子
let mut v = [-5i32, 4, 1, -3, 2];
// Return the median as if the array were sorted according to absolute value.
v.select_nth_unstable_by_key(2, |a| a.abs());
// We are only guaranteed the slice will be one of the following, based on the way we sort
// about the specified index.
assert!(v == [1, 2, -3, 4, -5] ||
v == [1, 2, -3, -5, 4] ||
v == [2, 1, -3, 4, -5] ||
v == [2, 1, -3, -5, 4]);
相关用法
- Rust slice.select_nth_unstable_by用法及代码示例
- Rust slice.select_nth_unstable用法及代码示例
- Rust slice.sort_unstable_by_key用法及代码示例
- Rust slice.sort_unstable_by用法及代码示例
- Rust slice.sort用法及代码示例
- Rust slice.swap_unchecked用法及代码示例
- Rust slice.split_array_mut用法及代码示例
- Rust slice.splitn_mut用法及代码示例
- Rust slice.split_first用法及代码示例
- Rust slice.splitn用法及代码示例
- Rust slice.split_array_ref用法及代码示例
- Rust slice.sort_by用法及代码示例
- Rust slice.swap_with_slice用法及代码示例
- Rust slice.swap用法及代码示例
- Rust slice.split用法及代码示例
- Rust slice.split_inclusive用法及代码示例
- Rust slice.split_mut用法及代码示例
- Rust slice.strip_suffix用法及代码示例
- Rust slice.split_last_mut用法及代码示例
- Rust slice.split_first_mut用法及代码示例
- Rust slice.sort_unstable用法及代码示例
- Rust slice.split_at_mut用法及代码示例
- Rust slice.split_at_unchecked用法及代码示例
- Rust slice.split_at用法及代码示例
- Rust slice.split_at_mut_unchecked用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 slice.select_nth_unstable_by_key。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。