なぜかバブルソートでハマったのでメモ


概要

隣り合う要素を交換して昇順に並び変えるソートアルゴリズム

翻訳

実装上は、交換が1回でも発生すれば再度全要素を調査。
1回も交換が発生しなければ終了。

実装(Go)

bubblesort
package main

import "fmt"

func bubblesort(list []int) []int {
    flag := true
    for flag {
        flag = false
        for i := 0; i < len(list)-1; i++ {
            if list[i] > list[i+1] {
                list[i], list[i+1] = list[i+1], list[i]
                flag = true
            }
        }
    }
    return list
}

func main() {
    list := []int{6, 3, 4, 7, 2, 1, 5}
    res := bubblesort(list)
    fmt.Println(res) // [1 2 3 4 5 6 7]
}

まとめ

いつでも出来ると思っているアルゴリズムでハマるとすごくつらい気持ちになる・・・