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

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
}