我想要一个go语言的排序算法
时间: 2023-07-07 08:08:10 浏览: 33
排序的算法
以下是Go语言实现的快速排序算法:
```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{5, 4, 3, 2, 1}
fmt.Println(arr)
quickSort(arr, 0, len(arr)-1)
fmt.Println(arr)
}
```
此代码实现了快速排序算法。在 `quickSort` 函数中,我们首先选择一个主元素(pivot),然后将数组分成两部分,左边的元素小于或等于主元素,右边的元素大于主元素。然后递归地对左右两部分进行快速排序。在 `partition` 函数中,我们使用 `i` 指针来记录小于等于主元素的位置,然后遍历数组,将小于等于主元素的元素移到 `i` 指针的左边。最后将主元素移到 `i+1` 位置,返回 `i+1` 作为新的主元素位置。
阅读全文