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]
コメント