用golang写快速排序
时间: 2023-06-20 19:08:16 浏览: 99
golang实现的常用排序算法
以下是用 Golang 实现的快速排序算法:
```go
package main
import "fmt"
func quickSort(arr []int, left, right int) {
if left < right {
pivot := partition(arr, left, right)
quickSort(arr, left, pivot-1)
quickSort(arr, pivot+1, right)
}
}
func partition(arr []int, left, right int) int {
pivot := arr[right]
i := left - 1
for j := left; j < right; j++ {
if arr[j] < pivot {
i++
arr[i], arr[j] = arr[j], arr[i]
}
}
arr[i+1], arr[right] = arr[right], arr[i+1]
return i + 1
}
func main() {
arr := []int{9, 3, 2, 7, 6, 8, 1, 5, 4}
quickSort(arr, 0, len(arr)-1)
fmt.Println(arr)
}
```
在 `quickSort` 函数中,我们选择数组的最后一个元素作为枢轴(pivot),然后使用 `partition` 函数将数组分成两个部分。在 `partition` 函数中,我们从左到右遍历数组,如果发现当前元素小于枢轴,则将它与 `i` 指向的元素交换位置,并将 `i` 向右移动一位。最后,我们将枢轴与 `i+1` 指向的元素交换位置,并返回 `i+1`。
通过不断递归调用 `quickSort` 函数,我们可以不断地将数组分成更小的部分,最终实现排序。
阅读全文