5.睡眠排序
最后更新于:2022-04-02 04:47:37
睡眠排序 (Sleep sort)
顾名思义,睡眠排序通过为待排序的元素启动独立的任务,每个任务按照待排元素的key执行相对应的睡眠时间,然后及时的将序列中的元素收集到一起,达到排序的目的。
~~~
package main
import (
"fmt"
"time"
)
func main() {
tab := []int{1, 3, 0, 5}
ch := make(chan int)
for _, value := range tab {
go func(val int) {
time.Sleep(time.Duration(val) * 10000000)
fmt.Println(val)
ch <- val
}(value)
}
for _ = range tab {
<-ch
}
}
~~~
';