forked from go/golangs_learn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.4 KiB
93 lines
2.4 KiB
package main
|
|
|
|
import "fmt"
|
|
|
|
func main() {
|
|
|
|
fmt.Println("执行 Bubble")
|
|
fmt.Println(Bubble([]int{2, 1, 45, 13, 16, 3, 7}))
|
|
fmt.Println("执行 Bubble2")
|
|
fmt.Println(Bubble2([]int{2, 1, 45, 13, 16, 3, 7}))
|
|
fmt.Println("执行 Bubble3")
|
|
fmt.Println(Bubble3([]int{2, 1, 45, 13, 16, 3, 7}))
|
|
fmt.Println("执行 Bubble4——1")
|
|
fmt.Println(Bubble4([]int{2, 1, 45, 13, 16, 3, 7}))
|
|
fmt.Println("执行 Bubble4——2")
|
|
fmt.Println(Bubble4([]int{1, 2, 3, 4, 5, 6, 7}))
|
|
fmt.Println("执行 Bubble4——3")
|
|
fmt.Println(Bubble4([]int{7, 6, 5, 4, 3, 2, 1}))
|
|
}
|
|
|
|
/**
|
|
Bubble 【优化】实现冒泡排序
|
|
a : 被排序数组
|
|
返回:排序完毕数组
|
|
*/
|
|
func Bubble(a []int) []int {
|
|
for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素
|
|
b := true // 定义变量优化
|
|
for ii := 0; ii < j-1; ii++ { // 循环无序列表部分
|
|
if a[i] < a[ii] { // 从一个元素与一个无序值比较
|
|
a[ii], a[i] = a[i], a[ii] // 较大的值移至后边
|
|
b = false // 发生交换
|
|
}
|
|
}
|
|
if b { // 为存在交换,结束循环
|
|
break
|
|
}
|
|
}
|
|
return a
|
|
}
|
|
|
|
/**
|
|
Bubble2 实现冒泡排序
|
|
a : 被排序数组
|
|
返回 :排序完毕数组
|
|
*/
|
|
func Bubble2(a []int) []int {
|
|
for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素
|
|
for ii := i + 1; ii < j; ii++ { // 循环无序列表部分
|
|
if a[i] > a[ii] { // 从一个元素与一个无序值比较
|
|
a[ii], a[i] = a[i], a[ii] // 较大的值移至后边
|
|
}
|
|
}
|
|
}
|
|
return a
|
|
}
|
|
|
|
/**
|
|
Bubble3 【异同】实现冒泡排序
|
|
a : 被排序数组
|
|
返回 :排序完毕数组
|
|
*/
|
|
func Bubble3(a []int) []int {
|
|
for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素
|
|
for ii := i; ii < j-1; ii++ { // 循环无序列表部分
|
|
if a[ii] > a[ii+1] { // 从一个元素与一个无序值比较
|
|
a[ii], a[ii+1] = a[ii+1], a[ii] // 较大的值移至后边
|
|
}
|
|
}
|
|
}
|
|
return a
|
|
}
|
|
|
|
/**
|
|
Bubble4 【异同-优化】实现冒泡排序
|
|
a : 被排序数组
|
|
返回 :排序完毕数组
|
|
*/
|
|
func Bubble4(a []int) []int {
|
|
for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素
|
|
b := true // 定义变量优化
|
|
for ii := 0; ii < j-1; ii++ { // 循环无序列表部分
|
|
if a[ii] > a[ii+1] { // 从一个元素与一个无序值比较
|
|
a[ii], a[ii+1] = a[ii+1], a[ii] // 较大的值移至后边
|
|
b = false
|
|
}
|
|
}
|
|
if b { // 为存在交换,结束循环
|
|
break
|
|
}
|
|
}
|
|
return a
|
|
}
|
|
|