原理就不介绍了,代码如下:
排序函数
func QuickSort(slice []int) (ret []int) {
if len(slice) < 2 { // 切片长度小于2就直接返回
return slice
}
pivot := slice[0]
var left, right []int
for _, elem := range slice[1:] {
if elem <= pivot {
left = append(left, elem)
} else {
right = append(right, elem)
}
}
// ...是因为append只能一个个追加,不能将一个切片追加到另一个切片中去!所以...的作用就是打散切片元素.
// 这里默认将每次的pivot追加到left切片中!
return append(append(QuickSort(left), pivot), QuickSort(right)...)
main函数
func main() {
arr := []int{7, 2, 6, 5, 1, 9, 0, 3, 4, 8}
fmt.Println(quickSort.QuickSort(arr))
}