鸡尾酒排序
鸡尾酒排序核心思想
关键词: 正向
、反向
、排序
鸡尾酒其实就是循环,正向
、反向
分别做冒泡排序。
代码实现
func CocktailSort(arr []int) []int {
// 数组长度
length := len(arr)
if length <= 1 {
return arr
}
// 遍历
for i := 0; i < length-1; i++ {
flag := false
// 正向冒泡
if i%2 == 0 {
for j := 0; j < length-1-i; j++ {
// 两两交换
if arr[j] > arr[j+1] {
arr[j], arr[j+1] = arr[j+1], arr[j]
flag = true
}
}
// 反向冒泡
} else {
for j := length - 1 - i; j > 0; j-- {
// 两两交换
if arr[j-1] > arr[j] {
arr[j-1], arr[j] = arr[j], arr[j-1]
flag = true
}
}
}
if !flag {
break
}
}
return arr
}