本文簡要介紹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 slice.select_nth_unstable_by_key用法及代碼示例
- 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。