package main
import "fmt"
var swapcnt int
func main() {
arr := []int{2, 3, 4, 5, 1}
myquickSort(arr, 0, len(arr)-1)
fmt.Println(arr)
fmt.Println(swapcnt)
}
func Swap(arr []int, l, r int) int {
idx := l
pivot := arr[r]
for i := l; i <= r; i++ {
if arr[i] <= pivot {
if idx != i {
arr[idx], arr[i] = arr[i], arr[idx]
swapcnt += 1
}
idx += 1
}
}
return idx - 1
}
func myquickSort(nums []int, l, r int) {
if l < r {
m := Swap(nums, l, r)
myquickSort(nums, l, m-1)
myquickSort(nums, m+1, r)
}
}
func quickSort(nums []int, l, r int) {
if l < r {
m := partition(nums, l, r)
quickSort(nums, l, m-1)
quickSort(nums, m+1, r)
}
}
func partition(nums []int, l int, r int) int {
key := nums[r]
i, j := l, l
for j < r {
if nums[j] < key {
nums[i], nums[j] = nums[j], nums[i]
i++
}
j++
}
nums[i], nums[r] = nums[r], nums[i]
return i
}
func qsort(arr []int, left, right int) {
if left > right {
return
}
pivot := arr[right]
i, j := left, right
for i < j {
for i < j && pivot < arr[j] {
j--
}
for i < j && pivot >= arr[i] {
i++
}
arr[i], arr[j] = arr[j], arr[i]
}
qsort(arr, left, i-1)
qsort(arr, i+1, right)
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具