挿入ソート in Rust

挿入ソート insertion sort

  • O(N^2)
  • 第2項から先頭に向かって隣同士入れ替えていく

昇順

fn main() {
    let mut a = [10, 3, 3, 1,  90, 34, 78, 2, 12, 56, 1];
    for ins in 1..a.len() {
        // 挿入する値を退避
        let temp = a[ins];
        for cmp in (0..ins).rev() {
            if a[cmp] > temp {  // 降順にするには逆にする
                a.swap(cmp, cmp+1); 
            } else {
                break;
            }
        }
    }
    println!("{:?}", a);
}