🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
~~~ package main import ( "fmt" "math/rand" "time" ) //TODO : 交换排序 - 快速排序(中位数的选取很关键) //当数据量多的时候可以选择多个数, 然后取这些数的中间值作为中位数(中位数越接近中间值效果越好) func QuickSort(data []int, L int) { t := time.Now() QuickSort2(data, L) fmt.Println("QuickSort - Time:", time.Since(t)) } func QuickSort2(data []int, L int) { if L <= 1 { return } mid := data[0] left, right := 0, L-1 for i := 1; i <= right; { if mid < data[i] { data[i], data[right] = data[right], data[i] right -- } else { data[i], data[left] = data[left], data[i] left++ i++ } } QuickSort2(data[:left], len(data[:left])) QuickSort2(data[left+1:], len(data[left+1:])) } func main() { rand.Seed(time.Now().Unix()) number := make([]int, 500000, 10000000) for k, _ := range number { number[k] = rand.Intn(1000000000) } L := len(number) //交换排序 - 快速排序 QuickSort(number, L) } ~~~