本文简要介绍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 slice.sort_by_cached_key用法及代码示例
- Rust slice.sort_by用法及代码示例
- Rust slice.sort_unstable_by_key用法及代码示例
- Rust slice.sort_unstable_by用法及代码示例
- Rust slice.sort_unstable用法及代码示例
- 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.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.select_nth_unstable用法及代码示例
- Rust slice.split_at_mut用法及代码示例
- Rust slice.select_nth_unstable_by用法及代码示例
- Rust slice.split_at_unchecked用法及代码示例
- Rust slice.split_at用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 slice.sort_by_key。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。