package hsort
func Qsort(arr []int, left, right int) {
//先对比左右下标的值是否是左小右大
if left < right {
mid := getMid(arr, left, right)
Qsort(arr, left, mid-1) //将左半边递归
Qsort(arr, mid+1, right) //将右半边递归
} //if end
}
func getMid(arr []int, left, right int) int {
povit := arr[left]
for left < right {
for arr[right] >= povit && left < right {
right--
}
//交换
arr[left], arr[right] = arr[right], arr[left]
for arr[left] <= povit && left < right {
left++
}
//交换
arr[left], arr[right] = arr[right], arr[left]
}
arr[left] = povit
return left
}
golang 快速排序
最新推荐文章于 2024-07-31 13:34:33 发布