[Rust]Vec(ベクタ)をソートするには?

Rust

どうも、ちょげ(@chogetarou)です。

Vec(ベクタ)をソートする方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

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();

コメント

タイトルとURLをコピーしました