package main
import (
"fmt"
"math/rand"
"time"
)
func qSort(arr []int, left int, right int) {
getPartion := func(arr []int, left int, right int) int {
priv := arr[left]
for left < right {
for left < right && priv <= arr[right] {
right--
}
arr[left], arr[right] = arr[right], arr[left]
for left < right && arr[left] <= priv {
left++
}
arr[left], arr[right] = arr[right], arr[left]
}
return left
}
if left < right {
partion := getPartion(arr, left, right)
qSort(arr, left, partion-1)
qSort(arr, partion+1, right)
}
}
func quickSort(arr []int) {
qSort(arr, 0, len(arr)-1)
}
func main() {
arr := make([]int, 10)
for i := 0; i < len(arr); i++ {
arr[i] = rand.Intn(10)
}
fmt.Println("交换前数组:", arr)
time.Now()
// golang 统计耗时
quickSort(arr)
st := time.Now()
fmt.Println("交换后数组:", arr)
fmt.Println("耗时:", time.Since(st))
}
输出:
交换前数组: [0 0 1 3 6 7 0 0 2 4]
交换后数组: [0 0 0 0 1 2 3 4 6 7]
耗时: 2.083µs
```