请golang写一段快速排序算法的代码
以下是Golang实现的快速排序算法:
package main
import "fmt"
func quickSort(arr []int, low, high int) {
if low < high {
pivot := partition(arr, low, high)
quickSort(arr, low, pivot-1)
quickSort(arr, pivot+1, high)
}
}
func partition(arr []int, low, high int) int {
pivot := arr[high]
i := low - 1
for j := low; j < high; j++ {
if arr[j] < pivot {
i++
arr[i], arr[j] = arr[j], arr[i]
}
}
arr[i+1], arr[high] = arr[high], arr[i+1]
return i + 1
}
func main() {
arr := []int{9, 8, 7, 6, 5, 4, 3, 2, 1}
quickSort(arr, 0, len(arr)-1)
fmt.Println(arr)
}
该算法采用分治法的思想,首先选取一个pivot作为参考点,将数组分为左右两部分,左边的元素小于pivot,右边的元素大于等于pivot。然后对左右两部分递归进行快速排序,直到整个数组有序
原文地址: https://www.cveoy.top/t/topic/ei0R 著作权归作者所有。请勿转载和采集!