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


Rust slice.sort_by_key用法及代碼示例


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

用法

pub fn sort_by_key<K, F>(&mut self, f: F) where    F: FnMut(&T) -> K,    K: Ord,

使用鍵提取函數對切片進行排序。

這種排序是穩定的(即不重新排序相等的元素)和 O(m * n * log(n)) 最壞情況,其中關鍵函數是 O(m)。

對於昂貴的鍵函數(例如,不是簡單屬性訪問或基本操作的函數), sort_by_cached_key 可能要快得多,因為它不會重新計算元素鍵。

在適用的情況下,首選不穩定排序,因為它通常比穩定排序更快,並且不分配輔助內存。見 sort_unstable_by_key

當前實施

當前算法是受timsort 啟發的自適應迭代合並排序。它被設計為在切片幾乎排序或由兩個或多個依次連接的排序序列組成的情況下非常快。

此外,它分配的臨時存儲空間大小為 self 的一半,但對於短切片,則使用非分配插入排序。

例子

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

v.sort_by_key(|k| k.abs());
assert!(v == [1, 2, -3, 4, -5]);

相關用法


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