用GO 写一个快速排序
时间: 2024-09-27 13:11:11 浏览: 27
在Go语言中,我们可以使用递归的方式来实现快速排序算法。快速排序是一种常用的分治算法,其基本思想是选择一个基准值,将数组分为两部分,一部分的所有元素都比基准小,另一部分所有元素都比基准大,然后对这两部分分别进行递归排序。以下是一个简单的快速排序示例:
```go
package main
import "fmt"
func quickSort(arr []int, low int, high int) {
if low < high {
// 找到分割点 pivot
pivotIndex := partition(arr, low, high)
// 对分割点左右两边的子数组进行递归排序
quickSort(arr, low, pivotIndex - 1)
quickSort(arr, pivotIndex + 1, high)
}
}
// partition 函数将数组分为两部分并返回基准的索引
func partition(arr []int, low int, high int) int {
pivot := arr[high] // 最后一个元素作为基准
i := low - 1 // 小于基准的元素的最后一个索引
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() {
arr := []int{9, 7, 5, 11, 12, 2, 14, 3, 10}
n := len(arr)
quickSort(arr, 0, n-1)
fmt.Println("Sorted array:", arr)
}
阅读全文