jspackage main
import "fmt"
func quickSort(arr []int, low, high int) {
if low < high {
// 获取分区后的基准索引
pivotIndex := partition(arr, low, high)
// 递归排序左半部分
quickSort(arr, low, pivotIndex-1)
// 递归排序右半部分
quickSort(arr, pivotIndex+1, high)
}
}
func partition(arr []int, low, high int) int {
// 选择最右侧元素作为基准
pivot := arr[high]
i := low - 1 // i 指向小于基准的区域边界
for j := low; j < high; j++ {
// 如果当前元素小于或等于基准
if arr[j] <= pivot {
i++
// 交换元素
arr[i], arr[j] = arr[j], arr[i]
}
}
// 将基准值交换到中间正确的位置
arr[i+1], arr[high] = arr[high], arr[i+1]
return i + 1
}
func main() {
data := []int{34, 7, 23, 32, 5, 62}
fmt.Println("排序前:", data)
quickSort(data, 0, len(data)-1)
fmt.Println("排序后:", data)
}
本文作者:曹子昂
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!