当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust slice.select_nth_unstable_by用法及代码示例


本文简要介绍rust语言中 slice.select_nth_unstable_by 的用法。

用法

pub fn select_nth_unstable_by<F>(    &mut self,     index: usize,     compare: F) -> (&mut [T], &mut T, &mut [T]) where    F: FnMut(&T, &T) -> Ordering,

使用比较器函数对切片重新排序,以便 index 处的元素位于其最终排序位置。

这种重新排序具有附加属性,即位置上的任何值i < index将小于或等于某个位置的任何值j > index使用比较器函数。此外,这种重新排序是不稳定的(即任意数量的相等元素可能最终出现在位置index),就地(即不分配),以及O(n) 最坏的情况下。该函数在其他库中也称为“kth element”。它使用提供的比较器函数返回以下值的三元组:小于给定索引处的所有元素、给定索引处的值以及大于给定索引处的所有元素。

当前实施

当前算法基于用于 sort_unstable 的相同快速排序算法的快速选择部分。

Panics

index >= len() 时发生Panics,这意味着它总是在空切片上发生Panics。

例子

let mut v = [-5i32, 4, 1, -3, 2];

// Find the median as if the slice were sorted in descending order.
v.select_nth_unstable_by(2, |a, b| b.cmp(a));

// We are only guaranteed the slice will be one of the following, based on the way we sort
// about the specified index.
assert!(v == [2, 4, 1, -5, -3] ||
        v == [2, 4, 1, -3, -5] ||
        v == [4, 2, 1, -5, -3] ||
        v == [4, 2, 1, -3, -5]);

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 slice.select_nth_unstable_by。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。