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.

94 lines
2.4 KiB

3 years ago
package main
3 years ago
import "fmt"
3 years ago
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
}