package main
import "fmt"
func main() {
items := []int{49, 38, 65, 97, 23, 22, 76, 1, 5, 8, 2, 0, -1, 22}
quickSort(&items, 0, len(items)-1)
fmt.Println(items)
}
func quickSort(items *[]int, left, right int) {
if left >= right {
return
}
v := (*items)[left]
tl := left
tr := right
direction := true //left->right=false
for left < right {
if direction {
if (*items)[right] < v {
(*items)[left] = (*items)[right]
(*items)[right] = v
left++
direction = false
continue
} else if (*items)[right] >= v {
right--
continue
}
} else {
if (*items)[left] > v {
(*items)[right] = (*items)[left]
(*items)[left] = v
right--
direction = true
continue
} else if (*items)[left] <= v {
left++
continue
}
}
}
(*items)[left] = v
quickSort(items, tl, left-1)
quickSort(items, right+1, tr)
}
快速排序golang版本
最新推荐文章于 2024-09-04 08:00:00 发布