AcWing 785. golang 快排
原题链接
简单
作者:
渲染
,
2024-03-30 14:05:52
,
所有人可见
,
阅读 2
package main
import "fmt"
func main(){
var n int
fmt.Scan(&n)
nums := make([]int,n)
for i:=0;i<n;i++{
fmt.Scan(&nums[i])
}
quitsort(nums,0,n-1)
for i:=0;i<n;i++{
fmt.Printf("%d ",nums[i])
}
}
func quitsort(nums []int,left int, right int){
if left >= right{
return
}
i , j := left-1,right+1
x := nums[(left + right) >> 1]
for i < j{
for {
i++
if nums[i] >= x{
break
}
}
for {
j--
if nums[j] <= x{
break
}
}
if i < j{
nums[i],nums[j] = nums[j],nums[i]
}
}
quitsort(nums,left,j)
quitsort(nums,j+1,right)
}