go排序-睡眠排序
package main
import (
"fmt"
"math/rand"
"sync"
"time"
)
func Sleep(arr ...int) (orders []int) {
var wg sync.WaitGroup
ch := make(chan int, len(arr))
for _, item := range arr {
wg.Add(1)
go func(sleepTime int) {
defer wg.Done()
time.Sleep(time.Duration(int64(sleepTime) * time.Hour.Milliseconds()))
ch <- sleepTime
}(item)
}
wg.Wait()
close(ch)
for item := range ch {
orders = append(orders, item)
}
return
}
func main() {
var theArray = []int{-1,10, 1, 18, 30, 23, 12, 7, 5, 18, 14}
r := rand.New(rand.NewSource(time.Now().UnixNano()))
for i:=0; i<100000; i++ {
theArray = append(theArray, r.Intn(1000))
}
fmt.Print("排序前")
//fmt.Println(theArray)
fmt.Print("排序后")
_ = Sleep(theArray...)
//fmt.Println(res)
}
没什么卵用 数字大就慢的要死

浙公网安备 33010602011771号