鸡尾酒镇楼 emmm,,,,勿喷 ^_^
package main
import "fmt"
func Jiweijie(a []int) {
// 记录最后一次交换元素位置
LastRightexchangeindex := 0
LastLeftexchangeindex := 0
//无需数列的边界,每次只需比较至此
rightSortBorder := len(a)-1
leftSortBorder := 0
for i := 0; i < len(a)/2-1; i++ {
Flag:=true
for j := i; j < rightSortBorder;j++ {
if a[j] > a[j+1] {
a[j],a[j+1] = a[j+1],a[j]
Flag = false
LastRightexchangeindex = j
}
}
rightSortBorder = LastRightexchangeindex
if Flag {
break
}
for j:=rightSortBorder;j>leftSortBorder ;j-- {
if a[j] < a[j-1] {
a[j],a[j-1] = a[j-1],a[j]
Flag=false
LastLeftexchangeindex = j
}
}
leftSortBorder = LastLeftexchangeindex
if Flag {
break
}
}
}
func main() {
var a []int
a = []int{2,3,4,5,9,6,7,8,1,10,13,12,11}
Jiweijie(a)
fmt.Println(a)
}