Rust – バブルソート

Rust でのバブルソート実装例です。
実用性ゼロです。

バブルソート

実行結果の出力からもわかるように、とても非効率なソート方法です。

fn bubble_sort<T>(xs: &mut [T])
where
    T: PartialOrd + std::fmt::Debug,
{
    println!("starting bubble sort");
    println!("  initial: {:?}", xs);
    let len = xs.len();
    for i in 1..len {
        for j in (i..len).rev() {
            if xs[j - 1] > xs[j] {
                xs.swap(j - 1, j);
            }
        }
        println!("  step {} : {:?}", i, xs);
    }
    println!("finished bubble sort");
}

fn main() {
    let mut v = vec![4, 3, 7, 9, 0, 2, 5, 6, 8, 1];
    bubble_sort(&mut v);
    println!("sorted: {:?}", v);
}
starting bubble sort
  initial: [4, 3, 7, 9, 0, 2, 5, 6, 8, 1]
  step 1 : [0, 4, 3, 7, 9, 1, 2, 5, 6, 8]
  step 2 : [0, 1, 4, 3, 7, 9, 2, 5, 6, 8]
  step 3 : [0, 1, 2, 4, 3, 7, 9, 5, 6, 8]
  step 4 : [0, 1, 2, 3, 4, 5, 7, 9, 6, 8]
  step 5 : [0, 1, 2, 3, 4, 5, 6, 7, 9, 8]
  step 6 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  step 7 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  step 8 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  step 9 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
finished bubble sort
sorted: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次