很久没有写Golang了,年前工作量小,写了个小例子。算是一个简单的回顾。
以下是使用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
for _, x := range arr[1:] {
if x < pivot {
left = append(left, x)
} else {
right = append(right, x)
}
}
return append(append(quicksort(left), pivot), quicksort(right)...)
}
func main() {
lst := []int{4, 5, 1, 8, 3, 2, 9, 6, 7}
sortedList := quicksort(lst)
fmt.Println(sortedList)
}
在这个示例中,我们首先定义了一个名为quicksort()
的函数,该函数接受一个整数型切片arr
作为输入,并返回一个已排序的整数型切片。然后我们在main
函数中创建了一个整数型切片lst
,用于存放要排序的元素。
函数quicksort()
的逻辑与之前的Python版本实现是一样的。我们首先检查输入切片的长度是否小于等于1,如果是,则直接返回该切片。否则,我们选择切片的第一个元素作为基准元素,然后将切片分成两个部分,一部分小于基准元素,另一部分大于等于基准元素。然后分别对这两部分递归调用quicksort()
函数,并将它们连接起来,形成已排序的切片。
在本示例中,我们使用了Go语言的一些特性,例如可变长切片(slice)、for ... range
语法以及append
函数。这些语言特性使得我们的代码更加简洁和易读。运行该示例代码,我们得到的输出结果是[1 2 3 4 5 6 7 8 9]
,这是已经排序好的整数型切片。
【小结】
温故而知新,学过的东西如果长时间不接触一定会感到陌生,有空得拿出来回顾一把。