バブルソート
O(n^2)
Goだとこんな感じ
code:go
package sort
type Order string
const (
ASC Order = "ASC"
DESC Order = "DESC"
)
func BubbleSort(arr []int, order Order) {
for i := len(arr); i > 0; i-- {
for j := 0; j < i-1; j++ {
if order == DESC {
}
} else {
}
}
}
}
}
番兵(ソート済みの位置を記録するインデックス)を使うと以下
番兵を使うことで、ソート済みの部分は毎回見ないでスキップさせられる
code:go
package sort
type Order string
const (
ASC Order = "ASC"
DESC Order = "DESC"
)
func BubbleSort(arr []int, order Order) {
n := len(arr)
for n > 1 {
newN := 0
for i := 1; i < n; i++ {
if order == DESC {
newN = i
}
} else {
newN = i
}
}
}
n = newN
}
}