社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
即每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
package main
import "fmt"
//选择排序
func main() {
bytes := []byte{9, 7, 3, 5, 6, 2, 8, 1, 4}
for i := 0; i < len(bytes)-1; i++ {
for j := i + 1; j < len(bytes); j++ {
if bytes[i] > bytes[j] {
bytes[i], bytes[j] = bytes[j], bytes[i]
}
}
fmt.Println(bytes)
}
}
运行结果
就是将一个数组的数据经过数组长度减1次排序,每次选出一个最大或者最小值,即冒泡排序法
//冒泡排序
func main() {
bytes := []byte{9, 7, 3, 5, 6, 2, 8, 1, 4}
fmt.Println(bytes)
for i := 0; i < len(bytes)-1; i++ {
max := 0
for j := 1; j < len(bytes)-i; j++ {
if bytes[max] > bytes[j] {
bytes[max], bytes[j] = bytes[j], bytes[max]
max = j
} else {
max = j
}
}
fmt.Println(bytes)
}
}
运行结果
遍历数组中的每个元素,依次插入左边排好序的数组中
//快速排序
func main() {
bytes := []byte{9, 7, 3, 5, 6, 2, 8, 1, 4}
fmt.Println(bytes)
for i := 1; i < len(bytes); i++ {
num := i
for j := i - 1; j >= 0; j-- {
if bytes[j] > bytes[num] {
bytes[j], bytes[num] = bytes[num], bytes[j]
num = j
}
}
fmt.Println(bytes)
}
}
运行结果
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!