package main
import (
"fmt"
"math/rand"
"time"
)
const ( //常量
min, max = 0, 1000000
)
var (
A []int
n int
)
func Init(n int) bool { //初始化切片
if n > 0 {
rand := rand.New(rand.NewSource(time.Now().UnixNano())) //时间种子
for i := 0; i < n; i++ {
A = append(A, (rand.Intn(max-min) + min)) //生成随机数
}
return true
} else {
return false
}
}
func Partition(p, r int) int { //数组的划分
x := A[r]
i := p - 1
for j := p; j < r; j++ {
if A[j] <= x {
i++
A[i], A[j] = A[j], A[i]
}
}
A[i+1], A[r] = A[r], A[i+1]
return i + 1
}
func Quick_sort(p, r int) {
if p < r {
q := Partition(p, r)
Quick_sort(p, q-1)
Quick_sort(q+1, r)
}
}
func main() {
fmt.Println("请输入元素的个数:")
fmt.Scanln(&n)
t1 := time.Now()
if Init(n) {
Quick_sort(0, n-1)
elapsed := time.Since(t1)
fmt.Println("运行时间: ", elapsed)
fmt.Println(A[45])
} else {
fmt.Println("你输入的数据存在错误\a")
}
}
对一千万条数据的排序,仅仅需要1.7030975s,有多快,不解释