1、题目
2、题解
看到题目中说不能使用库中的sort函数,所以突发奇想决定自己实现快排序试试,顺便回忆快排,谁能想到还踩了不少坑,具体快排算法就不粘贴了,网上好多,我的代码如下。
func sortColors(nums []int) {
qsort(nums, 0, len(nums)-1)
return
}
func qsort(arr []int, start, end int) {
// fmt.Println("----")
// fmt.Println(arr)
if end <= start{
return
}
povit := partition(arr, start, end)
qsort(arr, start, povit-1)
qsort(arr, povit+1, end)
}
func partition(arr []int, start, end int) int {
i:=start
povit:=arr[start]
for start<end {
// fmt.Println("++++", povit)
// fmt.Println(arr)
for start<end && arr[end]>=povit {
end--
}
for start<end && arr[start]<=povit {
start++
}
if start<end{
t:=arr[start]
arr[start]=arr[end]
arr[end]=t
}
// fmt.Println(arr)
}
arr[i]=arr[start]
arr[start]=povit
return start
}
提交结果