どうも、ちょげ(@chogetarou)です。
Vec(ベクタ)をソートする方法を紹介します。
方法

Vec(ベクタ)をソートする方法は、昇順と降順で違います。
昇順
Vec(ベクタ)を昇順(小さい順)にソートするには、「vect.sort()
」のように、Vec(ベクタ)からsort()を呼び出します。
//vect=対象のベクタ
vect.sort();
上記のsort()は、呼び出したVec(ベクタ)を昇順(小さい順)にソートします。
使用例
fn main() {
let mut numbers = vec![2, 5, 1, 4, 3];
numbers.sort();
println!("{:?}", numbers);
}
出力:
[1, 2, 3, 4, 5]
降順
Vec(ベクタ)を降順(大きい順)にソートする方法は、2つあります。
sort_by()
ひとつは、sort_by()を使う方法です。
まず、Vec(ベクタ)からsort_by()を呼び出します。
sort_by()の引数に2つの引数を持つクロージャーを指定します。
そして、クロージャーの式で第2引数からcmp()を呼び出し、cmp()の引数に第1引数を指定します。
//vect=対象の配列
vect.sort_by(|a, b| b.cmp(a));
上記のsort_by()は、呼び出したVec(ベクタ)を降順(大きい順)にソートします。
使用例
fn main() {
let mut numbers = vec![2, 5, 1, 4, 3];
numbers.sort_by(|a, b| b.cmp(a));
println!("{:?}", numbers);
}
出力:
[5, 4, 3, 2, 1]
sort()
もうひとつは、sort()を使う方法です。
まず、Vec(ベクタ)からsort()を呼び出します。
そして、Vec(ベクタ)からreverse()を呼び出します。
//vect=対象の配列
vect.sort();
vect.reverse();
上記のsort()とreverse()は、呼び出したVec(ベクタ)を降順(大きい順)にソートします。
使用例
fn main() {
let mut numbers = vec![2, 5, 1, 4, 3];
numbers.sort();
numbers.reverse();
println!("{:?}", numbers);
}
出力:
[5, 4, 3, 2, 1]
まとめ
Vec(ベクタ)をソートする方法は、昇順と降順で違います。
- 昇順にソートする方法
vect.sort();
- 降順にソートする方法
vect.sort_by(|a, b| b.cmp(a));
vect.sort();
vect.reverse();
コメント