當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust slice.select_nth_unstable用法及代碼示例


本文簡要介紹rust語言中 slice.select_nth_unstable 的用法。

用法

pub fn select_nth_unstable(    &mut self,     index: usize) -> (&mut [T], &mut T, &mut [T]) where    T: Ord,

重新排序切片,使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
v.select_nth_unstable(2);

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

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 slice.select_nth_unstable。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。