用golang写一个快排
时间: 2023-12-29 07:55:25 浏览: 87
好的,以下是用 Golang 实现的快速排序算法:
```go
package main
import "fmt"
func quickSort(arr []int) []int {
if len(arr) <= 1 {
return arr
}
pivot := arr[0]
var left []int
var right []int
var equal []int
for _, num := range arr {
if num < pivot {
left = append(left, num)
} else if num == pivot {
equal = append(equal, num)
} else {
right = append(right, num)
}
}
left = quickSort(left)
right = quickSort(right)
left = append(left, equal...)
left = append(left, right...)
return left
}
func main() {
arr := []int{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5}
fmt.Println("Before sorting: ", arr)
arr = quickSort(arr)
fmt.Println("After sorting: ", arr)
}
```
在这个实现中,我们首先检查传入的数组长度是否小于等于1,如果是,我们直接返回原数组。否则,我们选取第一个元素作为基准元素 `pivot`,并将其与数组中的其他元素进行比较。将小于 `pivot` 的元素放入 `left` 数组中,将等于 `pivot` 的元素放入 `equal` 数组中,将大于 `pivot` 的元素放入 `right` 数组中。然后,我们递归地对 `left` 和 `right` 数组进行排序,最后将它们和 `equal` 数组合并起来。
输出结果如下:
```
Before sorting: [3 1 4 1 5 9 2 6 5 3 5]
After sorting: [1 1 2 3 3 4 5 5 5 6 9]
```
希望这个程序能够帮到你!
阅读全文