以下是用Golang实现快速排序的示例代码,使用start和end两个游标进行实现:
package main
import "fmt"
func quickSort(arr []int, start, end int) {
if start < end {
pivot := partition(arr, start, end)
quickSort(arr, start, pivot-1)
quickSort(arr, pivot+1, end)
}
}
func partition(arr []int, start, end int) int {
pivot := arr[end]
i := start - 1
for j := start; j < end; j++ {
if arr[j] <= pivot {
i++
arr[i], arr[j] = arr[j], arr[i]
}
}
arr[i+1], arr[end] = arr[end], arr[i+1]
return i + 1
}
func main() {
arr := []int{9, 5, 7, 3, 2}
fmt.Println("Before sorting:", arr)
start := 0
end := len(arr) - 1
quickSort(arr, start, end)
fmt.Println("After sorting:", arr)
}
在这个示例中,quickSort() 函数使用了 start 和 end 这两个游标。首先,确定一个基准元素作为分割点(这里选择了最后一个元素),然后将数组划分为小于等于基准元素和大于基准元素两部分。接着,递归地对划分后的子数组进行排序。最终得到排序好的数组。
以上是用Golang实现快速排序的简单示例代码,供参考。
内容由零声教学AI助手提供,问题来源于学员提问




