Golang中的快速排序算法可以通過以下步驟來實(shí)現(xiàn):
選擇一個(gè)基準(zhǔn)元素,可以是數(shù)組中的任意一個(gè)元素。通常選擇第一個(gè)元素作為基準(zhǔn)元素。
將數(shù)組分為兩部分,小于基準(zhǔn)元素的放在左邊,大于基準(zhǔn)元素的放在右邊。
遞歸地對(duì)左右兩部分進(jìn)行快速排序。
下面是一個(gè)示例代碼實(shí)現(xiàn):
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[low]
for low < high {
for low < high && arr[high] >= pivot {
high--
}
arr[low] = arr[high]
for low < high && arr[low] <= pivot {
low++
}
arr[high] = arr[low]
}
arr[low] = pivot
return low
}
func main() {
arr := []int{9, 5, 7, 3, 1, 6, 0, 8, 4, 2}
quickSort(arr, 0, len(arr)-1)
fmt.Println(arr)
}
在上述示例代碼中,quickSort
函數(shù)實(shí)現(xiàn)了快速排序算法,partition
函數(shù)用于劃分?jǐn)?shù)組并返回基準(zhǔn)元素的最終位置。在main
函數(shù)中,我們定義了一個(gè)待排序的整數(shù)數(shù)組,并調(diào)用quickSort
函數(shù)對(duì)其進(jìn)行排序。最后輸出排序結(jié)果。